<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

Yff)                 @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l m	 Z	 d Z
 d d   Z d d	   Z e j e   e j  Z e j d
 e j  Z d d   Z Gd d   d e  Z d d   Z e d k r d  d l m Z e e  d S)    N)	TkVersion)	Delegator)idleConfFc             C   s   d |  d j  |  d S)z9Return a named group pattern matching list of alternates.z(?P<%s>|))join)nameZ
alternates r	   ;/opt/alt/python35/lib64/python3.5/idlelib/ColorDelegator.pyany   s    r   c        
      C   s   d t  d t j  d }  d d   t t  D } d t  d |  d } t  d d g  } d	 } | d
 } | d } | d } | d } t  d | | | | g  }	 |  d | d | d |	 d t  d d g  S)Nz\bKEYWORDc             S   s;   g  |  ]1 } | j  d   r | t j k r t |   q S)_)
startswithkeywordkwliststr).0r   r	   r	   r
   
<listcomp>   s   	 zmake_pat.<locals>.<listcomp>z([^.'\"\\#]\b|^)BUILTINCOMMENTz#[^\n]*z4(\br|u|ur|R|U|UR|Ur|uR|b|B|br|Br|bR|BR|rb|rB|Rb|RB)?z'[^'\\\n]*(\\.[^'\\\n]*)*'?z"[^"\\\n]*(\\.[^"\\\n]*)*"?z''''[^'\\]*((\\.|'(?!''))[^'\\]*)*(''')?z'"""[^"\\]*((\\.|"(?!""))[^"\\]*)*(""")?STRINGr   SYNCz\n)r   r   r   dirbuiltins)
kwZbuiltinlistbuiltincommentZstringprefixZsqstringZdqstringZ	sq3stringZ	dq3stringstringr	   r	   r
   make_pat   s    



r   z\s+(\w+)c             C   s   t  j   } t  j | d  } t  j | d d d } t  j | d  } |  j d | d d | d d | d	 | d d
 | d  t d k r |  j d | d  d S)z_Set color opitons of Text widget.

    Should be called whenever ColorDelegator is called.
    ZnormalZcursorZfgBgZfgZhilite
foreground
backgroundZinsertbackgroundZselectforegroundZselectbackgroundg      !@ZinactiveselectbackgroundN)r   CurrentThemeGetHighlightconfigr   )textthemeZnormal_colorsZcursor_colorZselect_colorsr	   r	   r
   color_config$   s    	


	r&   c               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
 d  Z d	 d d  Z d	 Z	 d Z
 d Z d	 d d  Z d	 Z d	 d d  Z d d   Z d d   Z d d   Z d d   Z d	 S)ColorDelegatorc             C   s-   t  j |   t |  _ t |  _ |  j   d  S)N)r   __init__progidprogLoadTagDefs)selfr	   r	   r
   r(   <   s    		zColorDelegator.__init__c             C   s~   |  j  d  k	 r |  j d  t j |  |  | d  k	 rh |  j   |  j d |  j  |  j d d  n d |  _ d |  _	 d  S)Nz<<toggle-auto-coloring>>z1.0endTF)
delegateZunbindr   setdelegateconfig_colorsZbindtoggle_colorize_eventnotify_rangestop_colorizingallow_colorizing)r,   r.   r	   r	   r
   r/   B   s    
	zColorDelegator.setdelegatec             C   sG   x3 |  j  j   D]" \ } } | r |  j | |  q W|  j d  d  S)NZsel)tagdefsitemsZtag_configureZ	tag_raise)r,   tagZcnfr	   r	   r
   r0   O   s    zColorDelegator.config_colorsc             C   s   t  j   } d t  j | d  d t  j | d  d t  j | d  d t  j | d  d	 t  j | d
  d d d  d d  i d d d  d d  i d t  j | d  d t  j | d  i	 |  _ t r t d |  j  d  S)Nr   r   r   r   r   r   r   r   
DEFINITIONZ
definitionr   r    r   TODOZERRORerrorZhitr5   )r   r!   r"   r5   DEBUGprint)r,   r%   r	   r	   r
   r+   U   s     zColorDelegator.LoadTagDefsNc             C   sG   |  j  |  } |  j j | | |  |  j | | d t |   d  S)Nz+%dc)indexr.   insertr2   len)r,   r=   charsZtagsr	   r	   r
   r>   f   s    zColorDelegator.insertc             C   s3   |  j  |  } |  j j | |  |  j |  d  S)N)r=   r.   deleter2   )r,   index1index2r	   r	   r
   rA   k   s    zColorDelegator.deleteTFc             C   s   |  j  d | |  |  j r0 t r, t d  d  S|  j rR d |  _ t rR t d  |  j r t rk t d  |  j d |  j  |  _ d  S)Nr9   zcolorizing already scheduledTzstop colorizingzschedule colorizing   )	tag_addafter_idr;   r<   
colorizingr3   r4   after
recolorize)r,   rB   rC   r	   r	   r
   r2   t   s    	 
		 
	 
zColorDelegator.notify_rangec             C   ss   |  j  r8 |  j  } d  |  _  t r+ t d  |  j |  d |  _ d |  _ | ro |  j sf | j   n	 | |  _ d  S)Nzcancel scheduled recolorizerFT)	rF   r;   r<   after_cancelr4   r3   rG   destroyclose_when_done)r,   rL   rF   r	   r	   r
   close   s    			 
			zColorDelegator.closec             C   s   |  j  r8 |  j  } d  |  _  t r+ t d  |  j |  |  j rc |  j rc t rZ t d  d |  _ |  j |  _ |  j r |  j r |  j d |  j  |  _  t r t d |  j r d p d  d S)	Nzcancel scheduled recolorizerzstop colorizingTrD   zauto colorizing turnedZonZoffbreak)	rF   r;   r<   rJ   r4   rG   r3   rH   rI   )r,   ZeventrF   r	   r	   r
   r1      s"    			 
 
	z$ColorDelegator.toggle_colorize_eventc             C   s9  d  |  _  |  j s& t r" t d  d  S|  j sC t r? t d  d  S|  j r` t r\ t d  d  Sz` d |  _ d |  _ t r t d  t j   } |  j	   t j   } t r t d | |  Wd  d |  _ X|  j r|  j
 d d	  rt r t d
  |  j d |  j  |  _  |  j r5|  j } d  |  _ | j   d  S)Nzno delegatezauto colorizing is offzalready colorizingFTzcolorizing...z%.3f secondsr9   z1.0zreschedule colorizingrD   )rF   r.   r;   r<   r4   rG   r3   timeZperf_counterrecolorize_maintag_nextrangerH   rI   rL   rK   )r,   Zt0Zt1topr	   r	   r
   rI      s@    		 
	 
	 
		 

 
 
			zColorDelegator.recolorizec             C   s  d } x|  j  d |  } | s" P| \ } } |  j d | |  |  j d |  } | rf | d } n d } d } | } d } d } x| s| } |  j | d |  } t | d d	  } d |  j | d
  k } |  j | |  }	 |	 s d  Sx$ |  j D] }
 |  j |
 | |  q W| |	 } |  j j	 |  } x | rx | j
   j   D] \ } } | rQ| j |  \ } } |  j | | d | | d |  | d k rQ|  j j | |  } | rQ| j d  \ } } |  j d | d | | d |  qQW|  j j	 | | j    } q8Wd |  j | d
  k rE| } d } n d } | sa|  j d |  |  j   |  j r t rt d  d  Sq Wq	 Wd  S)Nz1.0r9   r   rD    Fz+%d lines linestart   d   z-1cz+%dcdefclassr8   zcolorizing stopped)rV   rW   )rQ   
tag_removeZtag_prevranger=   minZ	tag_namesgetr5   r)   search	groupdictr6   spanrE   r*   matchr-   updater3   r;   r<   )r,   nextitemheadtailr@   Zlines_to_getokZmarkliner7   mkeyvalueabm1r	   r	   r
   rP      sl    	
				
	 
zColorDelegator.recolorize_mainc             C   s+   x$ |  j  D] } |  j | d d  q
 Wd  S)Nz1.0r-   )r5   rX   )r,   r7   r	   r	   r
   removecolors   s    zColorDelegator.removecolors)__name__
__module____qualname__r(   r/   r0   r+   r>   rA   rF   r4   rG   r2   rL   rM   r1   rI   rP   rl   r	   r	   r	   r
   r'   :   s    Ar'   c       	      C   s   d d l  m } m } d d l m } | |   } | j d  | j d |  j   d |  j   d f  d } | | d	 d
 } | j	 d d d d  | j
 d |  | j   t |  | |  } t   } | j |  d  S)Nr   )ToplevelText)
PercolatorzTest ColorDelegatorz200x100+%d+%d      z'if somename: x = 'abc' # comment
print
r    ZwhiteexpandrD   ZfillZbothr>   )tkinterrp   rq   Zidlelib.Percolatorrr   titleZgeometryZwinfo_rootxZwinfo_rootyZpackr>   Z	focus_setr&   r'   Zinsertfilter)	parentrp   rq   rr   rR   sourcer$   pdr	   r	   r
   _color_delegator  s    

	r|   __main__)run)rO   rer   r   rv   r   Zidlelib.Delegatorr   Zidlelib.configHandlerr   r;   r   r   compileSr)   r*   r&   r'   r|   rm   Zidlelib.idle_test.htestr~   r	   r	   r	   r
   <module>   s"   