3 § f0ã@s|dZddlZddlmZmZmZddljZdd„Z Gdd„dƒZ dd „Z d d „Z d d „Z edkrxddlmZeddd�dS)z'Define SearchEngine for search dialogs.éN)Ú StringVarÚ BooleanVarÚTclErrorcCst|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/python36/lib64/python3.6/idlelib/searchengine.pyÚgets  r c@s�eZdZdZdd„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  ( rcCsn|j|ƒ}|sdSd}|jƒ\}}xF||krh||krh|}||krH|d}|j||ƒ}|sZP|jƒ\}}q$W|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#)r?Úspan)r,rCr.rDÚfoundÚiÚjr r r rFÀs   rFc CsTy|jdƒ}|jdƒ}Wntk r4d}}YnX|sD|jdƒ}|sL|}||fS)zFReturn tuple of 'line.col' indexes from selection or insert mark. z sel.firstzsel.lastNÚinsert)rGr)r6r9r:r r r r2×s  r2cCstt|jdƒƒ\}}||fS)z8Return (line, col) tuple of ints from 'line.col' string.rE)rHrIrJ)rGr<r.r r r r3åsr3Ú__main__)Úmainz#idlelib.idle_test.test_searchenginer")Ú verbosity)rOrZtkinterrrrZtkinter.messageboxZ messageboxr1r rrFr2r3rLZunittestrVr r r r Ús  .