<!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>

e f%                 @   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 Z d d   Z	 d d   Z
 e j e
   e j  Z e j d	 e j  Z Gd
 d   d e  Z d d   Z e d k r d  d l m Z e e  n  d S)    N)	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/python34/lib64/python3.4/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               @   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  n  t j |  |  | d  k	 rk |  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&   +   s    
	zColorDelegator.setdelegatec             C   sJ   x6 |  j  j   D]% \ } } | r |  j | |  q q W|  j d  d  S)NZsel)tagdefsitemsZtag_configureZ	tag_raise)r#   tagZcnfr   r   r	   r'   8   s    zColorDelegator.config_colorsc             C   s   t  j   } i	 t  j | d  d 6t  j | d  d 6t  j | d  d 6t  j | d  d 6t  j | d	  d
 6i d  d 6d  d 6d 6i d  d 6d  d 6d 6t  j | d  d 6t  j | d  d 6|  _ t r t d |  j  n  d  S)Nr   r   r   r   r   r   r   r   Z
definition
DEFINITION
backgroundZ
foregroundr   TODOerrorZERRORZhitr,   )r   ZCurrentThemeZGetHighlightr,   DEBUGprint)r#   Zthemer   r   r	   r"   >   s     zColorDelegator.LoadTagDefsNc             C   sG   |  j  |  } |  j j | | |  |  j | | d t |   d  S)Nz+%dc)indexr%   insertr)   len)r#   r5   charsZtagsr   r   r	   r6   O   s    zColorDelegator.insertc             C   s3   |  j  |  } |  j j | |  |  j |  d  S)N)r5   r%   deleter)   )r#   index1index2r   r   r	   r9   T   s    zColorDelegator.deleteTFc             C   s   |  j  d | |  |  j r3 t r/ t d  n  d  S|  j r[ d |  _ t r[ t d  q[ n  |  j r t rw t d  n  |  j d |  j  |  _ n  d  S)Nr1   zcolorizing already scheduledTzstop colorizingzschedule colorizing   )	tag_addafter_idr3   r4   
colorizingr*   r+   after
recolorize)r#   r:   r;   r   r   r	   r)   ]   s    	 		 	 zColorDelegator.notify_rangec             C   s|   |  j  r> |  j  } d  |  _  t r. t d  n  |  j |  n  d |  _ d |  _ | rx |  j sl | j   qx | |  _ n  d  S)Nzcancel scheduled recolorizerFT)	r>   r3   r4   after_cancelr+   r*   r?   destroyclose_when_done)r#   rD   r>   r   r   r	   closek   s    			 			zColorDelegator.closec             C   s   |  j  r> |  j  } d  |  _  t r. t d  n  |  j |  n  |  j ro |  j ro t rc t d  n  d |  _ n  |  j |  _ |  j r |  j r |  j d |  j  |  _  n  t r t d |  j r d p d  n  d S)	Nzcancel scheduled recolorizerzstop colorizingTr<   zauto colorizing turnedZonZoffbreak)	r>   r3   r4   rB   r+   r?   r*   r@   rA   )r#   Zeventr>   r   r   r	   r(   y   s"    			  z$ColorDelegator.toggle_colorize_eventc             C   sQ  d  |  _  |  j s) t r% t d  n  d  S|  j sI t rE t d  n  d  S|  j ri t re t d  n  d  Szf d |  _ d |  _ t r t d  n  t j   } |  j	   t j   } t r t d | |  n  Wd  d |  _ X|  j r%|  j
 d d	  r%t r
t d
  n  |  j d |  j  |  _  n  |  j rM|  j } d  |  _ | j   n  d  S)Nzno delegatezauto colorizing is offzalready colorizingFTzcolorizing...z%.3f secondsr1   z1.0zreschedule colorizingr<   )r>   r%   r3   r4   r+   r?   r*   timeZperf_counterrecolorize_maintag_nextranger@   rA   rD   rC   )r#   Zt0Zt1topr   r   r	   rA      s@    		 	 	 		 
 
 			zColorDelegator.recolorizec             C   s  d } x|  j  d |  } | s% Pn  | \ } } |  j d | |  |  j d |  } | ri | 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] \ } } | rT| j |  \ } } |  j | | d | | d |  | d k r|  j j | |  } | r| j d  \ } } |  j d | d | | d |  qqqTqTW|  j j	 | | j    } q;Wd |  j | d
  k rQ| } d } n d } | sp|  j d |  n  |  j   |  j r t rt d  n  d  Sq Wq	 Wd  S)Nz1.0r1   r   r<    Fz+%d lines linestart   d   z-1cz+%dcdefclassr/   zcolorizing stopped)zdefzclass)rI   
tag_removeZtag_prevranger5   minZ	tag_namesgetr,   r    search	groupdictr-   spanr=   r!   matchr$   updater*   r3   r4   )r#   nextitemheadtailr8   Zlines_to_getokmarkliner.   mkeyvalueabZm1r   r   r	   rH      sl    	
				
	 zColorDelegator.recolorize_mainc             C   s+   x$ |  j  D] } |  j | d d  q
 Wd  S)Nz1.0r$   )r,   rP   )r#   r.   r   r   r	   removecolors   s    zColorDelegator.removecolors)__name__
__module____qualname__r   r&   r'   r"   r6   r9   r>   r+   r?   r)   rD   rE   r(   rA   rH   rd   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   } | j |  d  S)Nr   )ToplevelText)
PercolatorzTest ColorDelegatorz200x100+%d+%d      z'if somename: x = 'abc' # comment
print
r0   Zwhiteexpandr<   ZfillZbothr6   )Ztkinterrh   ri   Zidlelib.Percolatorrj   titleZgeometryZwinfo_rootxZwinfo_rootyZpackr6   Z	focus_setr   Zinsertfilter)	parentrh   ri   rj   rJ   sourcetextpdr   r   r	   _color_delegator   s    
	rt   __main__)run)rG   rer   r   Zidlelib.Delegatorr   Zidlelib.configHandlerr   r3   r
   r   compileSr    r!   r   rt   re   Zidlelib.idle_test.htestrv   r   r   r   r	   <module>   s   