U .‘cÂã@s~dZddlZddlmZmZmZddlmZdd„ZGdd„dƒZd d „Z d d „Z d d„Z e dkrzddl mZeddddS)z'Define SearchEngine for search dialogs.éN)Ú StringVarÚ BooleanVarÚTclError)Ú messageboxcCst|dƒst|ƒ|_|jS)z¼Return the singleton SearchEngine instance for the process. The single SearchEngine saves settings between dialog instances. If there is not a SearchEngine already, make one. Ú _searchengine)ÚhasattrÚ SearchEnginer)Úroot©r ú9/opt/alt/python38/lib64/python3.8/idlelib/searchengine.pyÚgets  r c@seZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zd"dd„Zd#dd„Zd$dd„Zd%d d!„ZdS)&rzr5r4r r r r rs  ( rcCsj| |¡}|sdSd}| ¡\}}||krf||krf|}||krF|d}| ||¡}|sXqf| ¡\}}q"|S)a&Search backwards and return an re match object or None. This is done by searching forwards until there is no match. Prog: compiled re object with a search method returning a match. Chars: line of text, without \n. Col: stop index for the search; the limit for match.end(). Nr@)rBÚspan)r-rFr1rGÚfoundÚiÚjr r r rI½s   rIcCsTz| d¡}| d¡}Wntk r4d}}YnX|sD| d¡}|sL|}||fS)zFReturn tuple of 'line.col' indexes from selection or insert mark. z sel.firstzsel.lastNÚinsert)rJr)r6r9r:r r r r2Ôs  r2cCstt| d¡ƒ\}}||fS)z8Return (line, col) tuple of ints from 'line.col' string.rH)rKrLrM)rJr<r1r r r r3âsr3Ú__main__)Úmainz#idlelib.idle_test.test_searchengineé)Ú verbosity)rRr"Ztkinterrrrrr rrIr2r3rOZunittestrYr r r r Ús  +