o
    VÌh5  ã                   @  sV   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 G dd„ dƒZdS )	é    )ÚannotationsN)ÚClassVar)ÚCleoValueError)ÚStyle)Ú
StyleStackc                   @  s´   e Zd ZU e d¡Zi Zded< 	d4d5dd„Ze	d6dd„ƒZ
ed6dd„ƒZd7d8dd„Zd9dd„Zd:dd„Zd;dd„Zd<d d!„Zd=d#d$„Zd>d'd(„Zd6d)d*„Zd?d-d.„Zd@d2d3„ZdS )AÚ	Formatterz0(?ix)<(([a-z](?:[^<>]*)) | /([a-z](?:[^<>]*))?)>zClassVar[dict[str, Style]]Ú_inline_styles_cacheFNÚ	decoratedÚboolÚstylesúdict[str, Style] | NoneÚreturnÚNonec                 C  s¼   || _ i | _|  dtddgd¡ |  dtdƒ¡ |  dtdƒ¡ |  d	td
ƒ¡ |  dtd
ƒ¡ |  dtddgd¡ |  dtddgd¡ |pJi  ¡ D ]
\}}|  ||¡ qMtƒ | _d S )NÚerrorÚredÚbold)ÚoptionsÚinfoÚblueÚcommentÚgreenÚquestionÚcyanÚc1Úc2ÚdefaultÚb)Ú
_decoratedÚ_stylesÚ	set_styler   Úitemsr   Ú_style_stack)Úselfr	   r   ÚnameÚstyle© r%   úm/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/cleo/formatters/formatter.pyÚ__init__   s   zFormatter.__init__ÚtextÚstrc                 C  s   t  dd|¡}|  |¡S )z9
        Escapes "<" special char in given text.
        z	([^\\]?)<z\1\<)ÚreÚsubÚescape_trailing_backslash)Úclsr(   r%   r%   r&   Úescape$   s   
zFormatter.escapec                 C  s0   |   d¡rt| ƒ}|  d¡ dd¡ |d¡} | S )z5
        Escapes trailing "\" in given text.
        ú\ú Ú )ÚendswithÚlenÚrstripÚreplaceÚljust)r(   Úlengthr%   r%   r&   r,   -   s   
z#Formatter.escape_trailing_backslashTc                 C  s
   || _ d S ©N©r   )r"   r	   r%   r%   r&   r	   8   ó   
zFormatter.decoratedc                 C  s   | j S r8   r9   )r"   r%   r%   r&   Úis_decorated;   s   zFormatter.is_decoratedr#   r$   r   c                 C  s   || j |< d S r8   ©r   )r"   r#   r$   r%   r%   r&   r   >   s   zFormatter.set_stylec                 C  s
   || j v S r8   r<   ©r"   r#   r%   r%   r&   Ú	has_styleA   r:   zFormatter.has_stylec                 C  s$   |   |¡std|› dƒ‚| j| S )NzUndefined style: "ú")r>   r   r   r=   r%   r%   r&   r$   D   s   

zFormatter.styleÚmessagec                 C  s   |   |d¡S )Nr   )Úformat_and_wrap)r"   r@   r%   r%   r&   ÚformatJ   s   zFormatter.formatÚwidthÚintc                 C  s@  d}d}d}| j  |¡D ]w}| ¡ }| d¡}|dkr$||d  dkr$q|  |||… |||¡\}	}||	7 }|t|ƒ }|d dk}
|
rI| d¡n| d¡}d }|rW|  |¡}|
sa|sa| j ¡  q|d u rt|  ||||¡\}	}||	7 }q|
r}| j 	|¡ q| j |¡ q|  ||d … |||¡\}	}||	7 }| 
dd¡ 
dd	¡S )
Nr   r1   é   r/   ú/é   r0   z\<ú<)Ú	TAG_REGEXÚfinditerÚstartÚgroupÚ_apply_current_styler3   Ú_create_style_from_stringr!   ÚpopÚpushr5   )r"   r@   rC   ÚoffsetÚoutputÚcurrent_line_lengthÚmatchÚposr(   Ú	formattedÚ	seen_openÚtagr$   r%   r%   r&   rA   M   sB   
ÿ
ÿ
ÿzFormatter.format_and_wrapc                 C  s*   | j }d| _ t dd|  |¡¡}|| _ |S )NFz\033\[[^m]*mr1   )r   r*   r+   rB   )r"   r(   r	   r%   r%   r&   Úremove_formatz   s
   zFormatter.remove_formatÚstringúStyle | Nonec              	   C  sÈ   || j v r
| j | S || jv r| j| S t d| ¡ ¡}|s d S tƒ }|D ]7\}}}|dkr4| |¡ q%|dkr>| |¡ q%ztt	j
| d¡ƒD ]}| |¡ qHW q% ty\   Y  d S w || j|< |S )Nz([^=]+)=([^;]+)(;|$)ÚfgÚbgú,)r   r   r*   ÚfindallÚlowerr   Ú
foregroundÚ
backgroundÚmapr)   ÚstripÚsplitÚ
set_optionÚ
ValueError)r"   rZ   Úmatchesr$   ÚwhereÚstyle_optionsÚ_Úoptionr%   r%   r&   rN   „   s,   



ÿÿ
z#Formatter._create_style_from_stringÚcurrentrS   útuple[str, int]c                 C  s"  |sd|fS |s|   ¡ r| jj |¡|fS ||fS |s!|r!| ¡ }|r6|| }|d |… d }||d … }nd}t d|¡}|t d|› dd|¡ }| d¡|rV| 	d¡nd }|sf|rf| 
d¡sfd| }| d¡}|D ]}	|t|	ƒ7 }||kr{d}qm|   ¡ r| jjj}
d t|
|ƒ¡}||fS )	Nr1   Ú
z(\n)$z([^\n]{z})\ *z\1
rE   r   )r;   r!   rm   ÚapplyÚlstripr*   rT   r+   r4   rL   r2   re   r3   Újoinrc   )r"   r(   rm   rC   rS   ÚiÚprefixÚmÚlinesÚlinerp   r%   r%   r&   rM   ¡   s8   
€
zFormatter._apply_current_style)FN)r	   r
   r   r   r   r   )r(   r)   r   r)   )T)r	   r
   r   r   )r   r
   )r#   r)   r$   r   r   r   )r#   r)   r   r
   )r#   r)   r   r   )r@   r)   r   r)   )r@   r)   rC   rD   r   r)   )rZ   r)   r   r[   )
r(   r)   rm   r)   rC   rD   rS   rD   r   rn   )Ú__name__Ú
__module__Ú__qualname__r*   ÚcompilerI   r   Ú__annotations__r'   Úclassmethodr.   Ústaticmethodr,   r	   r;   r   r>   r$   rB   rA   rY   rN   rM   r%   r%   r%   r&   r      s&   
 
ÿ







-

r   )Ú
__future__r   r*   Útypingr   Úcleo.exceptionsr   Úcleo.formatters.styler   Úcleo.formatters.style_stackr   r   r%   r%   r%   r&   Ú<module>   s    