
    
8di7                        d Z ddlmZ ddlZddlmZ ddlmZ  edg d          Z edg d	          Z	 ed
g d	          Z
 eddg          Z eddg          Z eddg          Z eddg          ZdZdez  ZdZdededZ ej        dez            Z ej        d          Z G d de          Z G d de          ZdS )zJ Utilities for processing ANSI escape codes and special ASCII characters.
    )
namedtupleN)QtGui)
dark_styleEraseAction)actionareaerase_to
MoveAction)r   dirunitcountScrollActionCarriageReturnActionr   NewLineAction
BeepActionBackSpaceActionABCDEFGHJKSTfmnsuz\[(.*?)([%s])z\](.*?)[]z?(|z)?z(||(?!
)|?
)|(?:%s)z([])c                   N    e Zd ZdZdZi Zd Zd Zd Zg fdZ	d Z
d Zd	 Zd
 ZdS )AnsiCodeProcessorz Translates special ASCII characters and ANSI escape codes into readable
        attributes. It also supports a few non-standard, xterm-specific codes.
    Fc                 x    g | _         | j                                        | _        |                                  d S N)actionsdefault_color_mapcopy	color_map	reset_sgrselfs    =lib/python3.11/site-packages/qtconsole/ansi_code_processor.py__init__zAnsiCodeProcessor.__init__J   s5    /4466    c                 Z    d| _         d| _        d| _        d| _        d| _        d| _        dS )z; Reset graphics attributs to their default values.
        r   FN)	intensityitalicbold	underlineforeground_colorbackground_colorr   s    r    r   zAnsiCodeProcessor.reset_sgrO   s6     	 $ $r"   c              #     K   g | _         d}t          |          dk    r|d         dk    rdnd}|
|dd         n|}t                              |          D ]/}|||                                         }t
                              | j        |          }|s| j         r|V  g | _         |                                }d |	                                D             }|d         }|dk    r3| j         
                    t          d                     dV  g | _         |dk    r3| j         
                    t          d	                     dV  g | _         |d
k    r4| j         
                    t          d                     dV  g | _         9|dk    s|dk    r4| j         
                    t          d                     |V  g | _         yd |d                             d          D             }	|                    d          rR	 t#          t%          t&          |	                    }	|                     |d         |	           # t*          $ r Y w xY w|                    d          r|                     |	           1||d         }t
                              | j        |          }|s| j         r|V  |-| j         
                    t          d                     |V  dS dS )zC Yields substrings for which the same escape code applies.
        r   
Nc                     g | ]}||S r    ).0gs     r    
<listcomp>z2AnsiCodeProcessor.split_string.<locals>.<listcomp>m   s    CCCAAMaMMMr"   beepzcarriage-return	backspacez
newlinec                     g | ]}||S r.   r.   )r/   params     r    r1   z2AnsiCodeProcessor.split_string.<locals>.<listcomp>   s    MMMUeM5MMMr"      ;[   ])r   lenANSI_OR_SPECIAL_PATTERNfinditerstartSPECIAL_PATTERNsub_replace_specialendgroupsappendr   r   r   r   split
startswithlistmapintset_csi_code
ValueErrorset_osc_code)
r   stringrB   	last_charmatchraw	substringrG   g0paramss
             r    split_stringzAnsiCodeProcessor.split_stringY   s      
  KK!OOr
d0B0BDD	 ) 56,55f== (	. (	.Eu{{}},-C'++D,A3GGI "DL "!IIKKECCCCCFBTzz##Jv$6$6777


!t##$89J$K$KLLL


!t##OK$@$@AAA


!trV||##M)$<$<===!MMfQiooc.B.BMMM==%% .=!%c#v&6&6!7!7
 ))&)V<<<<	 &    ]]3'' .%%f---UVVn#''(=sCC	 	 	OOO Li 8 8999OOOOO ! s   "I
IIc                    |dk    r1|r|                      |           dS |                      dg           dS |dk    s|dk    rn|r|d         nd}d|cxk    rdk    rSn dS |dk    rdnd}|dk    rd}n|d	k    rd
}n|dk    rd}| j                            t          d||                     dS dS |dk    s|dk    rB|dk    rdnd}|r|d         nd	}| j                            t	          d|d|                     dS dS )a3   Set attributes based on CSI (Control Sequence Introducer) code.

        Parameters
        ----------
        command : str
            The code identifier, i.e. the final character in the sequence.

        params : sequence of integers, optional
            The parameter codes for the command.
        mr   JKr=   screenlinerF   r:   rB   alleraseSTupdownscrollN)set_sgr_coder   rH   r   r   )r   commandrW   coder   r	   r   r   s           r    rN   zAnsiCodeProcessor.set_csi_code   s`    c>> '!!&)))))!!1#&&&&&nnnn &-6!99ADD~~~~A~~~~~~#*c>>xxv199$HHQYY&HHQYY$H##Kx$H$HIIIII ~ nnnn!S..$$fC!'.F1IIQELXsFE J JKKKKK nr"   c                 h   	 t          |                    d                    }n# t          t          f$ r Y dS w xY w|dk    ro	 t          |                    d                    }|                    d          }|                     |          | j        |<   dS # t          t          f$ r Y dS w xY wdS )z Set attributes based on OSC (Operating System Command) parameters.

        Parameters
        ----------
        params : sequence of str
            The parameters for the command.
        r   N   )rM   pop
IndexErrorrO   _parse_xterm_color_specr   )r   rW   rg   colorspecs        r    rP   zAnsiCodeProcessor.set_osc_code   s    	&**Q--((GGJ' 	 	 	FF	 a<<FJJqMM**zz!}}(,(D(DT(J(Ju%%%
+    <s   "% ::AB B/.B/c                    |sdS |                     d          }|dk    r|                                  n|dk    r| j        r	d| _        nmd| _        nd|dk    r	d| _        nU|dk    r	d| _        nF|dk    r	d| _        n7|dk    rd| _        d	| _        n!|d
k    r	d	| _        n|dk    r	d	| _        n|dk    r|dk    r|dz
  | _        n|dk    rW|rU|                     d          }|dk    r|r|                     d          | _        n|dk    r|dd         | _        g |dd<   n|dk    rd| _        n|dk    r|dk    r|dz
  | _        nj|dk    rW|rU|                     d          }|dk    r|r|                     d          | _        n*|dk    r|dd         | _        g |dd<   n|dk    rd| _        | 	                    |           dS )ad   Set attributes based on SGR (Select Graphic Rendition) codes.

        Parameters
        ----------
        params : sequence of ints
            A list of SGR codes for one or more SGR commands. Usually this
            sequence will have one element per command, although certain
            xterm-specific commands requires multiple elements.
        Nr   r:   Tr=      rj      F         %   &      '   (   /   0   1   )
rk   r   bold_text_enabledr&   r$   r%   r'   r(   r)   rf   )r   rW   rh   _color_types       r    rf   zAnsiCodeProcessor.set_sgr_code   s*     	Fzz!}}199NNQYY% # 		!"QYYDNNQYYDKKQYY!DNNRZZDNDIIRZZDKKRZZ"DNNRZZDBJJ$(2ID!!RZZFZ **Q--KaF(.

1%%!!(.rr
%rr
RZZ$(D!!RZZDBJJ$(2ID!!RZZFZ **Q--KaF(.

1%%!!(.rr
%rr
RZZ$(D! 	&!!!!!r"   c                 h   |                     d          r9t          t          d |dd                              d                              S |                     d          r9t          t          d |dd                              d                              S |dk    rt	          d	          |S )
Nzrgb:c                 "    t          | d          S )N   )rM   xs    r    <lambda>z;AnsiCodeProcessor._parse_xterm_color_spec.<locals>.<lambda>  s    s1bzz r"   rj   /zrgbi:c                 @    t          t          |           dz            S )N   )rM   floatr   s    r    r   z;AnsiCodeProcessor._parse_xterm_color_spec.<locals>.<lambda>  s    s588c>':': r"   rx   ?zUnsupported xterm color spec)rJ   tuplerL   rI   rO   )r   ro   s     r    rm   z)AnsiCodeProcessor._parse_xterm_color_spec  s    ??6"" 	=1148>>#3F3FGGHHH__W%% 	=::!!""X^^C002 2 3 3 3S[[;<<<r"   c                     |                     d          }|dk    r*| j                            t          dddd                     dS )Nr:   re   rd   page )groupr   rH   r   )r   rS   specials      r    rE   z"AnsiCodeProcessor._replace_special!  sC    ++a..d??LXvvq I IJJJrr"   N)__name__
__module____qualname____doc__r~   r   r!   r   rX   rN   rP   rf   rm   rE   r.   r"   r    r   r   9   s             
% % %= = =~ ,. "L "L "L "LH  ,?" ?" ?"J      r"   r   c                       e Zd ZdZi dddddddd	d
ddddddddddddddddddddddd Ze                                Zd%d!Zd" Zd# Z	d$S )&QtAnsiCodeProcessorz9 Translates ANSI escape codes into QTextCharFormats.
    r   blackr:   darkredr=   	darkgreenrq   brownrj   darkbluerx   
darkviolet   	steelblue   grey   	   red
   lime   yellow   deepskyblue   magenta   cyan   whitec                 r   t          |t                    r-|dk     r|dk    r|dz  }| j                            |d          }n!t          |t          t
          f          r|}ndS t          |t                    rt          j        |          S t          |t          t
          f          rt          j        | S dS )zp Returns a QColor for a given color code or rgb list, or None if one
            cannot be constructed.
        r   r   N)	
isinstancerM   r   getr   rK   strr   QColor)r   rn   r$   constructors       r    	get_colorzQtAnsiCodeProcessor.get_colorB  s    
 eS!! 	qyyY]]
.,,UD99KKt}-- 	KK4k3'' 	.
 <,,,eT]33 	.<--tr"   c                    t          j                    }|                     | j        | j                  }||                    |           |                     | j        | j                  }||                    |           | j        r%|	                    t           j
        j                   n$|	                    t           j
        j                   |                    | j                   |                    | j                   |S )zN Returns a QTextCharFormat that encodes the current style attributes.
        )r   QTextCharFormatr   r(   r$   setForegroundr)   setBackgroundr&   setFontWeightQFontBoldNormalsetFontItalicr%   setFontUnderliner'   )r   formatqcolors      r    
get_formatzQtAnsiCodeProcessor.get_format]  s     &((  5t~FF  (((  5t~FF  ((( 9 	5  !12222  !3444T[)))///r"   c                    | j                                         | _        t          |          s>t	          d          D ]}| j        |         | j        |dz   <   dx| j        d<   | j        d<   | j                            | j                   dS )zo
        Given a syntax style, attempt to set a color map that will be
        aesthetically pleasing.
        r   r   r   r   N)darkbg_color_mapr   r   r   ranger   update)r   styleis      r    set_background_colorz(QtAnsiCodeProcessor.set_background_colorv  s     "&!6!;!;!=!=%   	M 1XX J J040Fq0I&q1u-- FMLD"1%(>r(B 	d455555r"   N)r   )
r   r   r   r   r   r   r   r   r   r   r.   r"   r    r   r   (  s(        	W	Y 	
[ 	
W	
 	
Z 	
\ 	
[ 	
V 	
V 	
U 	V 	X 	] 	Y 	V  	W!& )--//   6  26 6 6 6 6r"   r   )r   collectionsr   reqtpyr   qtconsole.stylesr   r   r
   r   r   r   r   r   CSI_COMMANDSCSI_SUBPATTERNOSC_SUBPATTERNANSI_PATTERNcompiler@   rC   objectr   r   r.   r"   r    <module>r      s    # " " " " " 				       ( ' ' ' ' ' j(F(F(FGG
 Z&H&H&HII
 z.*L*L*LMM "z"88*EE  
?XJ77 Zxj11
 *.
;; #!L0%1$"*%D|%STT "*X&&l l l l l l l l^`6 `6 `6 `6 `6+ `6 `6 `6 `6 `6r"   