a
    ñ»jó   ã                	   @   s‚  d dl Z d dlZd dlZe d¡Ze d¡ZG dd„ deƒZedddƒZdd	d
ddddddœZ	G dd„ deƒZ
ddd„Zddd„Zedk�r
d dlZejZdZeeeƒƒ eeeƒƒ dZeeeƒƒ eeeƒƒ dZeeeƒƒ eeeƒƒ dZeeeƒƒ eeeƒƒ edk�rVd dlZd dlZejZe ¡ Ze d¡ e d¡ e eedƒƒ edk�r~d dlZejZdZeeeƒƒ dS ) é    Nz(?\[[0-9;]*m?)z?\[([0-9;]*)m?c                	   @   sl   e Zd Zddd„Zdddd	d
ddddœZeee ¡ e ¡ ƒƒZ	dd„ Z
dd„ Zee
eƒZdd„ Zdd„ ZdS )Ú	AnsiStateFÚwhiteÚblackc                 C   s"   || _ || _|| _|| _|| _d S ©N)ÚboldÚinverseÚcolorÚ
backgroundÚbackgroundbold)Úselfr   r   r   r	   r
   © r   ú>E:\soccer\ml_env\Lib\site-packages\pyreadline3/console/ansi.pyÚ__init__   s
    zAnsiState.__init__r   é   é   é   é   é   é   é   )r   ÚredÚgreenÚyellowÚblueÚmagentaÚcyanr   c                 C   sV   d}| j r|dO }| jr |dO }| jr.|dO }|| j| j O }|| j| j d> O }|S )Nr   é   é€   é @  r   )r   r
   r   Útrtabler   r	   ©r   Úattrr   r   r   Úget_winattr'   s    zAnsiState.get_winattrc                 C   sR   t |d@ ƒ| _t |d@ ƒ| _t |d@ ƒ| _| j|d@  | _| j|d@ d?  | _d S )Nr   r   r   r   ép   r   )Úboolr   r
   r   Úrevtabler   r	   r    r   r   r   Úset_winattr3   s
    zAnsiState.set_winattrc                 C   s(   d| j | jd| j d| j | j| jf S )NzNAnsiState(bold=%s,inverse=%s,color=%9s,background=%9s,backgroundbold=%s)# 0x%xz"%s")r   r   r   r	   r
   Úwinattr)r   r   r   r   Ú__repr__<   s    úþÿzAnsiState.__repr__c                 C   s2   t ƒ }| j|_| j|_| j|_| j|_| j|_|S r   )r   r   r   r   r	   r
   )r   Úxr   r   r   ÚcopyJ   s    zAnsiState.copyN)FFr   r   F)Ú__name__Ú
__module__Ú__qualname__r   r   ÚdictÚzipÚvaluesÚkeysr%   r"   r&   Úpropertyr'   r(   r*   r   r   r   r   r      s*        ú
ø

r   Fr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   c                   @   s,   e Zd Zefdd„Zddd„Zd	dd„ZdS )
Ú
AnsiWriterc                 C   s&   t ttƒr|| _ntƒ | _t| j_d S r   )Ú
isinstanceÚdefaultstater   r'   )r   Údefaultr   r   r   r   c   s    
zAnsiWriter.__init__Nc                 C   s¦  t |tƒr|}n$|du r$| j ¡ }ntƒ }||_|}t |¡}d}g }|D �]P}t |¡}|�r~| 	d¡ d¡}	t
|	ƒdkr”|	d dkr”| j ¡ }qJ|	D ]â}
|
dkr¶| j ¡ }d|_q˜|
dkrÆd|_q˜|
d	krÖd|_q˜t
|
ƒd
kr˜|
dkròd|_q˜d|
  k�r
dk�r"n ntt|
ƒd  |_q˜|
dk�r8| jj|_q˜d|
  k�rPdk�rhn ntt|
ƒd  |_q˜|
dkr˜| jj|_q˜qJ|t
|ƒ7 }| | ¡ |f¡ qJ||fS )z}write text at current cursor position and interpret color escapes.

        return the number of characters written.
        Nr   r   ú;Ú0FÚ7TÚ1r   Z22Ú30Ú37é   Ú39Ú40Ú47é(   Ú49)r4   r   r5   r*   r'   Úterminal_escapeÚsplitÚescape_partsÚmatchÚgroupÚlenr   r   r   Úintr   r	   Úappend)r   Útextr!   r5   ÚchunksÚnÚresÚchunkÚmÚpartsÚpartr   r   r   Úwrite_colorj   sP    






zAnsiWriter.write_colorc                 C   s"   |   ||¡\}}|dd„ |D ƒfS )Nc                 S   s   g | ]\}}|j ‘qS r   )r'   )Ú.0r!   rK   r   r   r   Ú
<listcomp>ž   ó    z*AnsiWriter.parse_color.<locals>.<listcomp>)rS   )r   rK   r!   rM   rN   r   r   r   Úparse_colorœ   s    zAnsiWriter.parse_color)N)N)r+   r,   r-   r5   r   rS   rW   r   r   r   r   r3   b   s   
2r3   c                 C   s   t tƒ}| | |¡S r   )r3   r5   rS   )rK   r!   Úar   r   r   rS   ¡   s    rS   c                 C   s^  g }t  | ¡}d}|du rd}|D �]4}t |¡}|�r6| d¡ d¡D ]ê}|dkrZd}n|dkrj|dO }|d	kr||d
O }qHt|ƒdkrÖd|  krœdkrÖn n6t|ƒd }|d@ |d@ d> B |d@ B |d@ d? B }qHt|ƒdkrHd|  krödkrHn qHt|ƒd }|d@ |d@ d> B |d@ d> B |d@ d> B }qHq"|t|ƒ7 }|r"| d| |f¡ q"|S )zuwrite text at current cursor position and interpret color escapes.

    return the number of characters written.
    r   Né   r   r7   r8   r9   r   r:   r   r   r;   r<   r=   iøÿÿÿr   r?   r@   rA   i�ÿÿÿr   z0x%x)rC   rD   rE   rF   rG   rH   rI   rJ   )rK   r!   rN   rL   rM   rO   rP   rR   r   r   r   Úwrite_color_old¦   sP    



$
ÿþ
ýÿ$
ÿ
þ
ýÿrZ   Z	__main__xzW[0;31mred[0;32mgreen[0;33myellow[0;34mblue[0;35mmagenta[0;36mcyan[0;37mwhite[0mzW[1;31mred[1;32mgreen[1;33myellow[1;34mblue[1;35mmagenta[1;36mcyan[1;37mwhite[0mze[0;7;31mred[0;7;32mgreen[0;7;33myellow[0;7;34mblue[0;7;35mmagenta[0;7;36mcyan[0;7;37mwhite[0mze[1;7;31mred[1;7;32mgreen[1;7;33myellow[1;7;34mblue[1;7;35mmagenta[1;7;36mcyan[1;7;37mwhite[0mÚ__main__Zdhsjdhsz[0;32mIn [[1;32m1[0;32m]:)N)N)ÚosÚreÚsysÚcompilerC   rE   Úobjectr   r5   r   r3   rS   rZ   r+   ÚpprintÚsÚconsoleÚConsoleÚcÚprintr   r   r   r   Ú<module>   s^   

Hø?

1




