
    f%                       d dl mZ d dlmZ d dlmZ d dlmZmZ d dlm	Z
 ddlmZ dd	gZ G d
 d      Z ej                         D  ci c]  \  } }|| 
 c}} Z ej                         D  ci c]  \  } }|| 
 c}} Zi Z	 ee
j&                        D ]  \  Z\  ZZZdededede	e<    ddZ G d de      Z e       Zyc c}} w c c}} w )    )annotations)	Formatter)	Generator)BG_ANSI_COLORSFG_ANSI_COLORS)_256_colors   )StyleAndTextTuplesANSIansi_escapec                  P    e Zd ZdZddZddZddZddZddZddZ	ddZ
dd	Zy
)r   a  
    ANSI formatted text.
    Take something ANSI escaped text, for use as a formatted string. E.g.

    ::

        ANSI('\x1b[31mhello \x1b[32mworld')

    Characters between ``\001`` and ``\002`` are supposed to have a zero width
    when printed, but these are literally sent to the terminal output. This can
    be used for instance, for inserting Final Term prompt commands.  They will
    be translated into a prompt_toolkit '[ZeroWidthEscape]' fragment.
    c                   || _         g | _        d | _        d | _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        | j                         }|j                  d        |D ]  }|j                  |        y )NF)value_formatted_text_color_bgcolor_bold
_underline_strike_italic_blink_reverse_hidden_parse_corotsend)selfr   parsercs       ]/var/www/cvtools/html/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/ansi.py__init__zANSI.__init__    s    
35 #'$(
 ""$D 	AKKN	    c              #  L  K   d}| j                   }	 d}d}|dk(  r3d}|dk7  r,d}|dk(  r|j                  d|f       d}n||z  }|dk7  r,|dk(  rd}|d	k(  rd}nQ|d
k(  rd}|rd}g }	 d}	|	j                         r||	z  }n|j                  t        t	        |xs d      d             |	dk(  rd}nT|	dk(  r"| j                  |       | j                         }nA|	dk(  r't        |d         D ]  }
|j                  |df        nn|j                  ||f       w)zB
        Coroutine that parses the ANSI escape sequences.
         TFNz[ZeroWidthEscape][   r   i'  ;mC )r   appendisdigitminint_select_graphic_rendition_create_style_stringrange)r   styleformatted_textcsir   escaped_textsquare_bracketcurrentparamscharis              r   r   zANSI._parse_corot5   s~     -- CA F{!6kAF{&--/BL.QR!$) 6k F{!&!S(Cf D ||~4
 c#gl*;T&BC  3;&(G "S[ ::6B$($=$=$?E! "S[%*6!9%5 D . 5 5ucl CD " "A P %%uaj1Y s   AD$CD$c                   |sdg}nt        |ddd         }|rQ|j                         }|t        v rt        |   | _        n$|t        v rt        |   | _        n|dk(  r	d| _        n|dk(  r	d| _        n|dk(  r	d| _        n|dk(  r	d| _	        n|d	k(  r	d| _	        n|d
k(  r	d| _
        n|dk(  r	d| _        n|dk(  r	d| _        n|dk(  r	d| _        n|dk(  r	d| _        n|dk(  r	d| _        nr|dk(  r	d| _	        nd|dk(  r	d| _
        nV|dk(  r	d| _        nH|dk(  r	d| _        n:|s@d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        n|dv rt        |      dkD  r|j                         }|dk(  rmt        |      dk\  r_|dk(  r+|j                         }t        j                  |      | _        n/|dk(  r*|j                         }t        j                  |      | _        |dk(  r_t        |      dk\  rQ	 d|j                         d|j                         d|j                         d}|dk(  r|| _        n|dk(  r|| _        	 |rPyy# t         $ r Y w xY w)zH
        Taken a list of graphics attributes and apply changes.
        r   Nr	   T                  	      F                  )&   0   rM   rN      #02x)listpop
_fg_colorsr   
_bg_colorsr   r   r   r   r   r   r   r   lenr   get
IndexError)r   attrsattrnr*   	color_strs         r   r1   zANSI._select_graphic_rendition   sc    CEtt%E99;Dz!(.# *4 0!
 #"&"" $##"
$"'# %$$" $"
"'$$# %$!c%j1nIIK 6c%jAorz!IIK&1ooa&8!IIK(3(: 6c%jAo
6		C0S0A%))+cARS "  2:*3DK!RZ,5DMW J & s   6I- -	I98I9c                `   g }| j                   r|j                  | j                          | j                  r|j                  d| j                  z          | j                  r|j                  d       | j                  r|j                  d       | j
                  r|j                  d       | j                  r|j                  d       | j                  r|j                  d       | j                  r|j                  d       | j                  r|j                  d       d	j                  |      S )
zW
        Turn current style flags into a string for usage in a formatted text.
        zbg:bold	underlinestrikeitalicblinkreversehiddenr,   )r   r-   r   r   r   r   r   r   r   r   join)r   results     r   r2   zANSI._create_style_string   s     ;;MM$++&==MM%$--/0::MM&!??MM+&<<MM(#<<MM(#;;MM'"==MM)$<<MM(#xxr!   c                "    d| j                   dS )NzANSI())r   r   s    r   __repr__zANSI.__repr__   s    tzznA&&r!   c                    | j                   S N)r   ri   s    r   __pt_formatted_text__zANSI.__pt_formatted_text__   s    ###r!   c                V    t        t        j                  | j                  ||            S )z
        Like `str.format`, but make sure that the arguments are properly
        escaped. (No ANSI escapes can be injected.)
        )r   	FORMATTERvformatr   )r   argskwargss      r   formatzANSI.format   s"    
 I%%djj$?@@r!   c                |    t        |t              s|f}t        d |D              }t        | j                  |z        S )z+
        ANSI('<b>%s</b>') % value
        c              3  2   K   | ]  }t        |        y wrl   )r   ).0r<   s     r   	<genexpr>zANSI.__mod__.<locals>.<genexpr>  s     4k!n4s   )
isinstancetupler   r   )r   r   s     r   __mod__zANSI.__mod__  s9     %'HE4e44DJJ&''r!   N)r   strreturnNone)r|   zGenerator[None, str, None])rY   z	list[int]r|   r}   )r|   r{   )r|   r
   )rq   r{   rr   r{   r|   r   )r   objectr|   r   )__name__
__module____qualname____doc__r    r   r1   r2   rj   rm   rs   rz    r!   r   r   r      s4    *S2jT6l 4'$A(r!   rP   rQ   c                X    t        |       j                  dd      j                  dd      S )z4
    Replace characters with a special meaning.
    r&   ?)r{   replace)texts    r   r   r     s(     t9VS)11$<<r!   c                      e Zd ZddZy)ANSIFormatterc                ,    t        t        ||            S rl   )r   rs   )r   r   format_specs      r   format_fieldzANSIFormatter.format_field%  s    6%566r!   N)r   r~   r   r{   r|   r{   )r   r   r   r   r   r!   r   r   r   $  s    7r!   r   N)r   r~   r|   r{   )
__future__r   stringr   typingr   prompt_toolkit.output.vt100r   r   r   _256_colors_tablebaser
   __all__r   itemsrT   rU   	enumeratecolorsr<   rgbr   r   ro   )kvs   00r   <module>r      s    "   F H $ ~( ~(D  4~3356tq!ad6
3~3356tq!ad6
 /667 /LAy1a3#wqg.KN/=7I 7
 O	- 76s   	C.C