o
    dh                     @   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mZm	Z	m
Z
mZmZ d dlmZmZmZmZ ejdkr>d dlmZ nd dlmZ ejdkrPd dlmZ nd dlmZ d ZdZd	Zd
ZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0d Z1d!Z2d"Z3d#Z4dZ5d	Z6d$d%d&d'd(d)d*d+d,d-d.d/Z7d0Z8d1Z9G d2d3 d3Z:G d4d5 d5Z;d6e<d7e<fd8d9Z=d:e<d7e>fd;d<Z?G d=d> d>Z@G d?d@ d@eZAG dAdB dBZBdEdCdDZCdS )F    N)OrderedDict)IteratorListOptionalSetTupleUnion)SCHEMEadd_truecolor_style_rule
get_stylespop_truecolor_styles)      )version)	TypedDict         r                     	         r      %   &   '   (   /   0   1         Z   a   d   k   u   ─u   ├u   ┤u   ┴u   ┬u   │u   ┘u   ┐u   ┌u   └u   ┼)0x710x740x750x760x770x780x6a0x6b0x6c0x6d0x6ea$  \documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{fancyvrb}
\usepackage[usenames,dvipsnames]{xcolor}
%% \definecolor{red-sd}{HTML}{7ed2d2}
%(hyperref)s
\title{%(title)s}

\fvset{commandchars=\\\{\}}

\begin{document}

\begin{Verbatim}
%(content)s
\end{Verbatim}
\end{document}
a  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=%(output_encoding)s">
<title>%(title)s</title>
<style type="text/css">
%(style)s
</style>
</head>
<body class="body_foreground body_background" style="font-size: %(font_size)s;" >
<pre class="ansi2html-content">
%(content)s
</pre>
</body>

</html>
c                
   @   sl   e Zd ZdddZdddZddedee ddfd	d
Zdededededdf
ddZ	de
e fddZdS )_StatereturnNc                 C   s   d| _ |   d S )NF)inside_spanresetself r<   X/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/ansi2html/converter.py__init__   s   z_State.__init__c                 C   sB   t | _t| _t| _t| _t| _	t
| _td f| _td f| _t| _d S N)ANSI_INTENSITY_NORMAL	intensityANSI_STYLE_NORMALstyleANSI_BLINK_OFFblinkANSI_UNDERLINE_OFF	underlineANSI_CROSSED_OUT_OFF
crossedoutANSI_VISIBILITY_ON
visibilityANSI_FOREGROUND_DEFAULT
foregroundANSI_BACKGROUND_DEFAULT
backgroundANSI_NEGATIVE_OFFnegativer:   r<   r<   r=   r9      s   


z_State.reset	ansi_code	parameterc                 C   s  |t ttfv r|| _d S |ttfv r|| _d S |ttt	fv r#|| _
d S |ttfv r.|| _d S |ttfv r9|| _d S |ttfv rD|| _d S t|  krNtkrWn n|d f| _d S t|  kratkrjn n|d f| _d S |tkru||f| _d S |tkr|d f| _d S t|  krtkrn n|d f| _d S t|  krtkrn n|d f| _d S |t kr||f| _d S |t!kr|d f| _d S |t"t#fv r|| _$d S d S r?   )%ANSI_INTENSITY_INCREASEDANSI_INTENSITY_REDUCEDr@   rA   ANSI_STYLE_ITALICrB   rC   ANSI_BLINK_SLOWANSI_BLINK_FASTrD   rE   ANSI_UNDERLINE_ONrF   rG   ANSI_CROSSED_OUT_ONrH   rI   rJ   ANSI_VISIBILITY_OFFrK   ANSI_FOREGROUND_CUSTOM_MINANSI_FOREGROUND_CUSTOM_MAXrM   "ANSI_FOREGROUND_HIGH_INTENSITY_MIN"ANSI_FOREGROUND_HIGH_INTENSITY_MAXANSI_FOREGROUNDrL   ANSI_BACKGROUND_CUSTOM_MINANSI_BACKGROUND_CUSTOM_MAXrO   "ANSI_BACKGROUND_HIGH_INTENSITY_MIN"ANSI_BACKGROUND_HIGH_INTENSITY_MAXANSI_BACKGROUNDrN   ANSI_NEGATIVE_ONrP   rQ   )r;   rR   rS   r<   r<   r=   adjust   sV   








z_State.adjustrgbc                 C   sH   d |||}|tk}t|||||| |r||f| _d S ||f| _d S )Nz{:03d}{:03d}{:03d})formatr`   r
   rM   rO   )r;   rR   rh   ri   rj   rS   is_foregroundr<   r<   r=   adjust_truecolor   s   z_State.adjust_truecolorc                 C   s   g }dt t dtdtdd fdd}dt t dtttt f dtdtd	tdd fd
d}||| jt ||| jt	 ||| j
t ||| jt ||| jt ||| jt | jtk}||| jt|d ||| jt|d |S )Noutputvaluedefaultr7   c                 S   s"   ||krd| }|  | d S d S )Nzansi%d)append)rn   ro   rp   	css_classr<   r<   r=   append_unless_default   s   z4_State.to_css_classes.<locals>.append_unless_defaultcolorrQ   neg_css_classc           	      S   s`   |\}}||kr%|rdnd}|d u rt |nd||f }| ||  d S |r.| | d S d S )Ninvansiz%d-%s)strrq   )	rn   rt   rp   rQ   ru   ro   rS   prefixcss_class_indexr<   r<   r=   append_color_unless_default   s   z:_State.to_css_classes.<locals>.append_color_unless_defaultinv_backgroundinv_foreground)r   rx   intr   r   boolrA   r@   rC   rB   rE   rD   rG   rF   rI   rH   rK   rJ   rQ   rf   rM   rL   rO   rN   )r;   css_classesrs   r{   flip_fore_and_backgroundr<   r<   r=   to_css_classes   sJ   

z_State.to_css_classesr7   Nr?   )__name__
__module____qualname__r>   r9   r~   r   rx   rg   rm   r   r   r<   r<   r<   r=   r6      s    

,r6   c                   @   s"   e Zd ZdededdfddZdS )OSC_Linkurltextr7   Nc                 C   s   || _ || _d S r?   )r   r   )r;   r   r   r<   r<   r=   r>      s   
zOSC_Link.__init__)r   r   r   rx   r>   r<   r<   r<   r=   r      s    r   charr7   c                 C   s    t t| }|tv rt| S | S r?   )hexordVT100_BOX_CODES)r   char_hexr<   r<   r=   map_vt100_box_code  s   r   r   c                 C   s   | r|  dr	dS dS )N
FT)endswith)r   r<   r<   r=   _needs_extra_newline  s   r   c                   @   s   e Zd ZdS )CursorMoveUpN)r   r   r   r<   r<   r<   r=   r     s    r   c                   @   s:   e Zd ZU eed< eed< eed< eed< ee ed< dS )
Attributesdark_bg	line_wrap	font_sizebodystylesN)r   r   r   r   __annotations__rx   r   r<   r<   r<   r=   r     s   
 r   c                   @   sh  e Zd ZdZ											d1ded	ed
edededededededededdfddZdedefddZdedefddZ	dede
eee f fddZded ee deeeeef  fd!d"Zded ee d#edeeeef  fd$d%Zd&eeeeef  deeeef  fd'd(Z	d2ded)edefd*d+Z	d3ded,ed)edefd-d.Zdefd/d0ZdS )4Ansi2HTMLConverterzConvert Ansi color codes to CSS+HTML

    Example:

    >>> conv = Ansi2HTMLConverter()
    >>> ansi = " ".join(sys.stdin.readlines())
    >>> html = conv.convert(ansi)
    FTnormalutf-8	ansi2html latexinliner   r   r   linkifyescapedmarkup_linesoutput_encodingschemetitler7   Nc                 C   s   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|  d| _|r9tdd t| j| j| j	D | _td| _td| _td| _td| _d S )NFc                 S   s   g | ]
}|j d |fqS ).)klassstrip).0itemr<   r<   r=   
<listcomp>B  s    z/Ansi2HTMLConverter.__init__.<locals>.<listcomp>z	\(([B0])z\[([\d;:]*)([a-zA-z])z(((((https?|ftps?|gopher|telnet|nntp)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*\';/?:@&=+$,A-Za-z0-9])+)([).!\';/?:,][\s])?)z\]8;;(.*?)(.*?)\]8;;)r   r   r   r   r   r   r   r   r   r   r   hyperrefdictr   r   recompilevt100_box_codes_progansi_codes_progurl_matcherosc_link_re)r;   r   r   r   r   r   r   r   r   r   r   r   r<   r<   r=   r>   $  s2   zAnsi2HTMLConverter.__init__linec                 C   s0   t |ts|S | jr| jd|S | jd|S )Nz	\\url{\1}z<a href="\1">\1</a>)
isinstancerx   r   r   sub)r;   r   r<   r<   r=   
do_linkifyQ  s
   
zAnsi2HTMLConverter.do_linkifypartc                 C   s,   | j rd| _d|j|jf S d|j|jf S )NTz\href{%s}{%s}z<a href="%s">%s</a>)r   r   r   r   )r;   r   r<   r<   r=   handle_osc_linksY  s   z#Ansi2HTMLConverter.handle_osc_linksrw   c                    s   t  } ||} |}t|}dttttf  dtt f fdd}t||}d	|} j
rE jsEd	dd t|dD }||fS )	Npartsr7   c                 3   sT    | D ]$}t |tr jr |V  q|V  qt |tr$ |V  q|V  qd S r?   )r   rx   r   r   r   r   )r   r   r:   r<   r=   _check_linkse  s   

z4Ansi2HTMLConverter.apply_regex.<locals>._check_linksr   r   c                 S   s   g | ]
\}}d ||f qS )z<span id="line-%i">%s</span>r<   )r   ir   r<   r<   r=   r   u  s    
z2Ansi2HTMLConverter.apply_regex.<locals>.<listcomp>)set_apply_regex_collapse_cursorlistr   r   rx   r   r   joinr   r   	enumeratesplit)r;   rw   styles_used	all_partsno_cursor_partsr   r   combinedr<   r:   r=   apply_regex_  s   
&
zAnsi2HTMLConverter.apply_regexr   c           
      #   s    j r!jrtg }ntg d}| D ]
\}} || qdtt f fdd}d|  dtdtttt	f  ffdd}t
 }| D ]}	t|	t	rV|	V  qK|	||E d H  qK|jrqjrld	V  d S d
V  d S d S )N))&z&amp;)<z&lt;)>z&gt;r7   c                  3   sv    d} d}j  D ]&} | |  }|r"|D ]}t|V  qn|V  | } | d dk}q | d  V  d S )Nr   F0)r   finditerstartr   endgroups)last_endbox_drawing_modematchtrailerr   rw   r;   r<   r=   _vt100_box_drawing  s   z;Ansi2HTMLConverter._apply_regex.<locals>._vt100_box_drawingr   rw   c                 3   sl    d} j | D ]#}| ||  }|V  | d }| d }t||V  | }q	| |d  V  d S )Nr   r   )r   r   r   r   r   r   )rw   r   r   r   r   r   r:   r<   r=   	_osc_link  s   
z2Ansi2HTMLConverter._apply_regex.<locals>._osc_link}</span>)r   r   r   itemsreplacer   rx   r   r   r   r6   r   _handle_ansi_coder8   )
r;   rw   r   specialspatternspecialr   r   stater   r<   r   r=   r   |  s.   
"


zAnsi2HTMLConverter._apply_regexr   c              
   #   s|   d} j |D ]}|||  V  | }| \}}|dvr$q	|dkr-t V  q		 t|}|dd}|dd}t||krEnq.zd	d
 t	d|D }W n t
y_   tg}Y nw d }	d}
t|D ]8\}}||
krqqh|tkrx|}	qh|ttfv rz||d  }W n ty   d}Y nw |tk}|rdnd}|| }
qh|	d ur||	d d  }|jrd|_ jrdV  ndV  |  |sq	d}
t|D ]\}}||
krq|ttfv }z||d  }W n ty   d}Y nw |tk}|tk}|r|rz
t||d  }W n
 ty   Y qw |d }
n.|rA|rAz||||d  ||d  ||d   W n
 ty;   Y qw |d }
qd }|j||d q|jr] jrWdV  ndV  d|_| }|seq	||  jr jt   jr fdd
|D }d|d  V  n' fdd
|D }dd| V  n jrdd| V  ndd| V  d|_q	||d  V  d S )Nr   mMAATz:::z;;;c                 S   s   g | ]}t |qS r<   )r~   )r   xr<   r<   r=   r         z8Ansi2HTMLConverter._handle_ansi_code.<locals>.<listcomp>z[;:]r   r   r   Fr   r   r   )rS   c                    s8   g | ]} j | jd  d  dkr j | jd  d qS )r   rt   r   )r   kwlr   r   r:   r<   r=   r   $  s    z\textcolor[HTML]{%s}{c                    s"   g | ]}| j v r j | jqS r<   )r   kwr   r:   r<   r=   r   +  s    
z<span style="%s">z; z\textcolor{%s}{ z<span class="%s">)r   r   r   r   r   r   lenr   r   r   
ValueErrorANSI_FULL_RESETr   r`   re   
IndexErrorANSI_256_COLOR_IDr8   r   r9   ANSI_TRUECOLOR_IDrx   rm   rg   r   updater   r   r   r   )r;   rw   r   r   r   r   paramscommand	param_lenlast_null_indexskip_after_indexr   vx_bit_color_idis_256_colorshiftis_x_bit_coloris_truecolorrS   r   rC   r<   r:   r=   r     s   

 


z$Ansi2HTMLConverter._handle_ansi_coder   c                 C   s   g }|D ]F}|s	qt |trE|r|  |rDt |d ts*t |d trDd|d vrD|  |rDt |d ts*t |d trDd|d vs*q|| q|S )z=Act on any CursorMoveUp commands by deleting preceding tokensr   r   )r   r   popr   rx   rq   )r;   r   final_partsr   r<   r<   r=   r   9  s2   


z#Ansi2HTMLConverter._collapse_cursorensure_trailing_newlinec                 C   s@   |  |\}}|rt|r|d7 }| j| j| j||d| _| jS )z,Load the contents of 'ansi' into this objectr   )r   r   r   r   r   )r   r   r   r   r   _attrs)r;   rw   r  r   r   r<   r<   r=   prepareY  s   zAnsi2HTMLConverter.preparefullc              	      s   | j ||d |s d S | jrt}nt}t| j| j| j}|dd }t fdd|}|d	t
tt|t
| | j| j d | j| jrLdd
 S d	d
 S )z
        :param ansi: ANSI sequence to convert.
        :param full: Whether to include the full HTML document or only the body.
        :param ensure_trailing_newline: Ensures that ``\n`` character is present at the end of the output.
        )r  r   Nr   c                    s   | j d d v S )Nr   r   )r   lstrip)eattrsr<   r=   <lambda>  r   z,Ansi2HTMLConverter.convert.<locals>.<lambda>r   z\usepackage{hyperref}r   )rC   r   r   contentr   r   )r  r   _latex_template_html_templater   r   r   r   filterr   r   maprx   r   r   r   r   )r;   rw   r  r  	_template
all_stylesbackgroundsused_stylesr<   r  r=   convertm  s*   zAnsi2HTMLConverter.convertc              
   C   s&   ddd ttt| j| j| ji S )Nz+<style type="text/css">
%(style)s
</style>
rC   r   )r   r  rx   r   r   r   r   r:   r<   r<   r=   produce_headers  s
   z"Ansi2HTMLConverter.produce_headers)FFTTr   FTFr   r   r   )r   F)TF)r   r   r   __doc__r   rx   r>   r   r   r   r   r   r   r   r   r   r   r6   r   r   r   r   r  r  r  r<   r<   r<   r=   r     s    	

-
:
 
!

r   c            	         sN  t t } td}tjtjd| d}|jdddddd	d
 |jddddddd
 |jddddddd
 |jddddddd
 |jddddddd |jddd ddd!d
 |jd"d#d$ddd%d
 |jd&d'd(ddd)d
 |jd*d+d,d-d.d/d
 |jd0d1d2ddd3d
 |jd4d5d6d7d8d |jd9d:d6d7d;d |jd<d=d>d?d| d@|  dA |jdBdCdDdEdFdG |	 \ }t
 j j j  j  j j j j j j jdH}ttjdIrttjtjstj }t| jdJt_dTdLtdMtdNdOf fdPdQ} j r||! dEdR dOS t" j#p j }|j$dE%tj& |d-dS}||dEdR dOS )Uz
    $ ls --color=always | ansi2html > directories.html
    $ sudo tail /var/log/messages | ccze -A | ansi2html > logs.html
    $ task burndown | ansi2html > burndown.html
    r   z	%%prog %s)usager   z-pz	--partialpartialF
store_truez8Process lines as them come in.  No headers are produced.)destrp   actionhelpz-Lz--latexr   z Export as LaTeX instead of HTML.z-iz--inliner   z)Inline style without headers or template.z-Hz	--headersheaderszJust produce the <style> tag.z-fz--font-sizer   SIZEr   z'Set the global font size in the output.)r  metavarrp   r  z-lz--light-backgroundlight_backgroundz&Set output to 'light background' mode.z-Wz--no-line-wrapno_line_wrapzDisable line wrapping.z-az	--linkifyr   zTransform URLs into <a> links.z-uz
--unescaper   Tstore_falsez*Do not escape XML tags found in the input.z-mz--markup-linesr   z0Surround lines with <span id='line-n'>..</span>.z--input-encodinginput_encodingENCODINGr   zSpecify input encodingz--output-encodingr   zSpecify output encodingz-sz--schemer   r	   z=Specify color palette scheme. Default: %%default. Choices: %s)r  r  rp   choicesr  z-tz--titleoutput_titler   zSpecify output title)r  rp   r  )r   r   r   r   r   r   r   r   r   r   r   detachr   r   output_unicoder   r7   Nc                    sB   t tjdr| |  j}tjj| d S tj| |  d S )Nbuffer)hasattrsysstdoutencoder   r)  write)r(  r   output_bytesoptsr<   r=   _print#  s   zmain.<locals>._print)r   )r  r  )r   )'sortedr	   keysr   optparseOptionParsermainr  
add_option
parse_argsr   r   r   r   r!  r   r   r   r   r   r   r&  r*  r+  stdinr   ioStringIOr'  TextIOWrapperr#  rx   r  r  r   r  r  r   	readlines)	scheme_namesversion_strparserargsconvinput_bufferr2  r  rn   r<   r0  r=   r7    s  


r7  r   )Dr;  r5  r   r+  collectionsr   typingr   r   r   r   r   r   ansi2html.styler	   r
   r   r   version_infoimportlib.metadatar   importlib_metadatar   typing_extensionsr   rT   rU   r@   rV   rB   rW   rX   rD   rY   rF   rZ   rH   rJ   r[   r\   r]   r`   rL   ra   rb   re   rN   rf   rP   r^   r_   rc   rd   r   r   r   r  r  r6   r   rx   r   r   r   r   r   r   r7  r<   r<   r<   r=   <module>   s    

{  {