JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB YI~d2@sddlZddlZddlZddlZddlmZddlmZdZddZ ddZ e e ej Z e d ej Zd d ZGd d d eZddZedkrddlmZeddddddlmZeedS)N)idleConf) DelegatorFcCsd|d|dS)Nz(?P<%s>|))join)nameZ alternatesr6/opt/alt/python37/lib64/python3.7/idlelib/colorizer.pyany sr c Csdtdtjd}ddttD}dtd|d}tddg}d }|d }|d }|d }|d }td||||g} |d|d|d| dtddgS)Nz\bKEYWORDcSs(g|] }|ds|tjkrt|qS)_) startswithkeywordkwliststr).0rrrr s zmake_pat..z([^.'\"\\#]\b|^)BUILTINCOMMENTz#[^\n]*z(?i:r|u|f|fr|rf|b|br|rb)?z'[^'\\\n]*(\\.[^'\\\n]*)*'?z"[^"\\\n]*(\\.[^"\\\n]*)*"?z''''[^'\\]*((\\.|'(?!''))[^'\\]*)*(''')?z'"""[^"\\]*((\\.|"(?!""))[^"\\]*)*(""")?STRINGrSYNCz\n)r rrdirbuiltins) kwZ builtinlistbuiltincommentZ stringprefixZsqstringZdqstringZ sq3stringZ dq3stringstringrrr make_pats rz\s+(\w+)cCs^t}t|d}t|dd}t|d}|j|d|d||d|d|dddS)NZnormalZcursor foregroundZhilite background)rrZinsertbackgroundZselectforegroundZselectbackgroundZinactiveselectbackground)r CurrentTheme GetHighlightZconfig)textthemeZ normal_colorsZ cursor_colorZ select_colorsrrr color_config"s  r$c@s|eZdZddZddZddZddZd d Zdd d ZdddZ dddZ ddZ dddZ ddZ ddZddZd S) ColorDelegatorcCs*t||t|_t|_|dS)N)r__init__ init_stateprogidprog LoadTagDefs)selfrrr r&Gs  zColorDelegator.__init__cCsd|_d|_d|_d|_dS)NTF)after_idallow_colorizingstop_colorizing colorizing)r+rrr r'NszColorDelegator.init_statecCs\|jdk r|dt|||dk rL||d|j|ddn d|_d|_ dS)Nz<>z1.0endTF) delegateZunbindr setdelegate config_colorsZbindtoggle_colorize_event notify_ranger.r-)r+r1rrr r2Us   zColorDelegator.setdelegatecCs4x$|jD]\}}|j|f|q W|ddS)NZsel)tagdefsitemsZ tag_configureZ tag_raise)r+tagZcnfrrr r3lszColorDelegator.config_colorsc Cszt}t|dt|dt|dt|dt|dddddddt|dt|dd |_trvtd |jdS) NrrrrZ definition)rrerrorhit) rr rr DEFINITIONrTODOZERRORr:r6)rr r!r6DEBUGprint)r+r#rrr r*rs      zColorDelegator.LoadTagDefsNcCs6||}|j||||||dt|dS)Nz+%dc)indexr1insertr5len)r+r?charsZtagsrrr r@s zColorDelegator.insertcCs&||}|j||||dS)N)r?r1deleter5)r+index1index2rrr rCs zColorDelegator.deletecCsb|d|||jr$tr tddS|jrr/r.r-after recolorize)r+rDrErrr r5szColorDelegator.notify_rangecCs8|jr(|j}d|_trtd||d|_d|_dS)Nzcancel scheduled recolorizerFT)r,r=r> after_cancelr-r.)r+r,rrr closes zColorDelegator.closecCs|jr(|j}d|_trtd|||jrF|jrFtr@tdd|_|j |_|jrl|jsl|d|j|_trtd|jr~dpddS) Nzcancel scheduled recolorizerzstop colorizingTrFzauto colorizing turnedZonZoffbreak) r,r=r>rJr-r/r.rHrI)r+Zeventr,rrr r4s"    z$ColorDelegator.toggle_colorize_eventcCsd|_|jstrtddS|js2tr.tddS|jrHtrDtddSzHd|_d|_trbtdt}| t}trtd||Wdd|_X|jr| dd rtrtd | d |j |_dS) Nz no delegatezauto colorizing is offzalready colorizingFTz colorizing...z %.3f secondsr<z1.0zreschedule colorizingrF) r,r1r=r>r-r/r.timeZ perf_counterrecolorize_main tag_nextrangerHrI)r+Zt0Zt1rrr rIs8 zColorDelegator.recolorizecCsd}x|d|}|sP|\}}|d|||d|}|rJ|d}nd}d}|}d}d}x|s|}||d|}t|dd }d||d k}|||} | sdSx|jD]} || ||qW|| }|j |} x| rx| D]~\} } | r| | \}}| | |d ||d || d kr|j||}|r| d\}}| d |d ||d |qW|j || } qWd||d kr|}d}nd}|s| d|||jrbtrtddSqbWqWdS)Nz1.0r<rrFFz+%d lines linestartdz-1cz+%dc)defclassr;zcolorizing stopped)rO tag_removeZ tag_prevranger?minZ tag_namesgetr6r(search groupdictr7spanrGr)matchr0updater.r=r>)r+nextitemheadtailrBZ lines_to_getokZmarkliner8mkeyvalueabZm1rrr rNsl           zColorDelegator.recolorize_maincCs"x|jD]}||ddqWdS)Nz1.0r0)r6rU)r+r8rrr removecolors#s zColorDelegator.removecolors)N)N)N)N)__name__ __module__ __qualname__r&r'r2r3r*r@rCr5rKr4rIrNrhrrrr r%7s    "Br%c Csddlm}m}ddlm}||}|dtt| ddd\}}|d|d|d fd }||d d }|j dd d| d|| t |||} t} | | dS)Nr)ToplevelText) PercolatorzTest ColorDelegator+rFz 700x250+%d+%dabif True: int ('1') # keyword, builtin, string, comment elif False: print(0) else: float(None) if iF + If + IF: 'keyword matching must respect case' if'': x or'' # valid string-keyword no-space combinations async def f(): await g() # All valid prefixes for unicode and byte strings should be colored. 'x', '''x''', "x", """x""" r'x', u'x', R'x', U'x', f'x', F'x' fr'x', Fr'x', fR'x', FR'x', rf'x', rF'x', Rf'x', RF'x' b'x',B'x', br'x',Br'x',bR'x',BR'x', rb'x', rB'x',Rb'x',RB'x' # Invalid combinations of legal characters should be half colored. ur'x', ru'x', uf'x', fu'x', UR'x', ufr'x', rfu'x', xf'x', fx'x' Zwhite)rZboth)expandfillr@)ZtkinterrlrmZidlelib.percolatorrntitlemapintZgeometrysplitpackr@Z focus_setr$r%Z insertfilter) parentrlrmrntopxysourcer"pdrrr _color_delegator)s     r__main__)mainz idlelib.idle_test.test_colorizerrQ) verbosityexit)run)rrrerMZidlelib.configrZidlelib.delegatorrr=r rcompileSr(r)r$r%rriZunittestrZidlelib.idle_test.htestrrrrr s&  s"