a  ze@szddlZddlmZmZmZddlmZddZGdddZdd Zd d Z d d Z e dkrvddl m Z e ddddS)N) StringVar BooleanVarTclError) messageboxcCst|dst||_|jS)N _searchengine)hasattr SearchEnginer)rootr H/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/searchengine.pygets  r c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ d!ddZd"ddZd#ddZd$dd ZdS)%rcCsR||_t|d|_t|d|_t|d|_t|d|_t|d|_t|d|_dS)NFT) r rpatvarrrevarcasevarwordvarwrapvarbackvar)selfr r r r __init__s     zSearchEngine.__init__cCs |jSN)rr rr r r getpat%szSearchEngine.getpatcCs|j|dSr)rsetrpatr r r setpat(szSearchEngine.setpatcCs |jSr)rr rr r r isre+szSearchEngine.isrecCs |jSr)rr rr r r iscase.szSearchEngine.iscasecCs |jSr)rr rr r r isword1szSearchEngine.iswordcCs |jSr)rr rr r r iswrap4szSearchEngine.iswrapcCs |jSr)rr rr r r isback7szSearchEngine.isbackcCs |rt|}||dSr)rreescaperrr r r setcookedpat<s zSearchEngine.setcookedpatcCs.|}|st|}|r*d|}|S)Nz\b%s\b)rrr"r#rrr r r getcookedpatCs  zSearchEngine.getcookedpatc Cs|}|s||ddS|}d}|s:|tjB}zt||}Wn:tjy}z |||j|j WYd}~dSd}~00|S)NzEmpty regular expressionr) r report_errorr%rr" IGNORECASEcompileerrormsgpos)rrflagsproger r r getprogKs  zSearchEngine.getprogNcCsNdt|}|r |dt|}|dur8|dt|}tjd||jddS)NzError: z Pattern: z Offset: zRegular expression error)Zmaster)strrZ showerrorr )rrr*colr r r r&\s zSearchEngine.report_errorrc Cs|s|}|sdS|j}t|\}}|rb|r<|}n|}t|\}} ||||| ||} n.|rl|}n|}t|\}} ||||| ||} | Sr)r/rr get_selectionr! get_line_colsearch_backwardsearch_forward) rtextr-okwrapfirstlaststartliner1resr r r search_textfs$    zSearchEngine.search_textc Csd}|}|d|d|d} | r|| dd|} | rT|sL| |krT|| fS|d}|rj||krjqd}d}|d|d|d} | s |r d}d}d}|dd} q dS)Nr%d.0z1.0z2.0)r searchend) rr6r-r<r1r8r7wrapped startlinecharsmr r r r5s( zSearchEngine.search_forwardc Csd}|}|d|d|d} t|| dd|} | rP|sH| |krP|| fS|d}|rf||krfqd}|dkr|sxqd}d}|d} tt| d\}}|d|d|d} t| d}q dS)Nrr?r@rAzend-1c.)r search_reverser;indexmapintsplitlen) rr6r-r<r1r8r7rDrErFrGr+r r r r4s*  zSearchEngine.search_backward)N)Nr)r)r)__name__ __module__ __qualname__rrrrrrr r!r$r%r/r&r>r5r4r r r r rs ( rcCsj||}|sdSd}|\}}||krf||krf|}||krF|d}|||}|sXqf|\}}q"|S)Nr@)rBspan)r-rFr1rGfoundijr r r rIs   rIcCsRz|d}|d}Wnty2d}}Yn0|sB|d}|sJ|}||fS)Nz sel.firstzsel.lastinsert)rJr)r6r9r:r r r r2s   r2cCstt|d\}}||fS)NrH)rKrLrM)rJr<r1r r r r3sr3__main__)mainz#idlelib.idle_test.test_searchengine) verbosity)r"tkinterrrrrr rrIr2r3rOZunittestrXr r r r s  +