
    	Vfh                        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\  rd 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/Z7d0Z8d1Z9 G d2 d3      Z: G d4 d5      Z;d6e<d7e<fd8Z=d9e<d7e>fd:Z? G d; d<      Z@ G d= d>e      ZA G d? d@      ZBdBdAZCy)C    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            
       f    e Zd ZddZddZddedee   ddfdZdeded	ed
eddf
dZ	de
e   fdZy)_StatereturnNc                 2    d| _         | j                          y )NF)inside_spanresetselfs    \/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/ansi2html/converter.py__init__z_State.__init__   s     

    c                     t         | _        t        | _        t        | _        t        | _        t        | _	        t        | _        t        d f| _        t        d f| _        t         | _        y 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=   s    r?   r<   z_State.reset   sK    3+
(
0316Mt5T6Mt5T.rA   	ansi_code	parameterc                    |t         t        t        fv r|| _        y |t        t
        fv r|| _        y |t        t        t        fv r|| _
        y |t        t        fv r|| _        y |t        t        fv r|| _        y |t"        t$        fv r|| _        y t(        |cxk  r	t*        k  rn n
|d f| _        y t.        |cxk  r	t0        k  rn n
|d f| _        y |t2        k(  r
||f| _        y |t4        k(  r
|d f| _        y t6        |cxk  r	t8        k  rn n
|d f| _        y t<        |cxk  r	t>        k  rn n
|d f| _        y |t@        k(  r
||f| _        y |tB        k(  r
|d f| _        y |tD        tF        fv r|| _$        y y rC   )%ANSI_INTENSITY_INCREASEDANSI_INTENSITY_REDUCEDrD   rE   ANSI_STYLE_ITALICrF   rG   ANSI_BLINK_SLOWANSI_BLINK_FASTrH   rI   ANSI_UNDERLINE_ONrJ   rK   ANSI_CROSSED_OUT_ONrL   rM   rN   ANSI_VISIBILITY_OFFrO   ANSI_FOREGROUND_CUSTOM_MINANSI_FOREGROUND_CUSTOM_MAXrQ   "ANSI_FOREGROUND_HIGH_INTENSITY_MIN"ANSI_FOREGROUND_HIGH_INTENSITY_MAXANSI_FOREGROUNDrP   ANSI_BACKGROUND_CUSTOM_MINANSI_BACKGROUND_CUSTOM_MAXrS   "ANSI_BACKGROUND_HIGH_INTENSITY_MIN"ANSI_BACKGROUND_HIGH_INTENSITY_MAXANSI_BACKGROUNDrR   ANSI_NEGATIVE_ONrT   rU   )r>   rV   rW   s      r?   adjustz_State.adjust   ss   $"!
 

 'DN,.?@@"DJ?O^LL"DJ,.@AA&DN.0DEE'DO-/BCC'DO'9R8RR($/DO.212  )$/DO/)()4DO11($/DO'9R8RR($/DO.212  )$/DO/)()4DO11($/DO+->??%DM @rA   rgbc                     dj                  |||      }|t        k(  }t        ||||||       |r
||f| _        y ||f| _        y )Nz{:03d}{:03d}{:03d})formatre   r   rQ   rS   )r>   rV   rm   rn   ro   rW   is_foregrounds          r?   adjust_truecolorz_State.adjust_truecolor   sR    (//q!
	 "_4 	1aIN()4DO()4DOrA   c                 t   g }dt         t           dt        dt        dd fd}dt         t           dt        t        t        t           f   dt        dt
        dt        dd f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defaultr9   c                 <    ||k7  rd|z  }| j                  |       y y )Nzansi%d)append)ru   rv   rw   	css_classs       r?   append_unless_defaultz4_State.to_css_classes.<locals>.append_unless_default   s%    $u,	i(  rA   colorrU   neg_css_classc                     |\  }}||k7  r/|rdnd}|t        |      nd||fz  }| j                  ||z          y |r| j                  |       y y )Ninvansiz%d-%s)strry   )	ru   r|   rw   rU   r}   rv   rW   prefixcss_class_indexs	            r?   append_color_unless_defaultz:_State.to_css_classes.<locals>.append_color_unless_default   sc      %E9"*#,#4CJ7eYEW;W   f67m, rA   inv_backgroundinv_foreground)r   r   intr   r   boolrE   rD   rG   rF   rI   rH   rK   rJ   rM   rL   rO   rN   rU   rk   rQ   rP   rS   rR   )r>   css_classesr{   r   flip_fore_and_backgrounds        r?   to_css_classesz_State.to_css_classes   s3   !#	)$s) 	)C 	)# 	)RV 	)
	-I	-hsm+,	- 	- 		-
 	- 	-" 	k4>>;PQk4::7HIk4::~Fk4>>;MNk4??<PQk4??<NO#'==4D#D #OO#$	
 	$OO#$	
 rA   r9   NrC   )__name__
__module____qualname__r@   r<   r   r   r   rl   rs   r   r    rA   r?   r8   r8      sc    	/*& *& *& *&X
5# 
5# 
5# 
5# 
5$ 
50S	 0rA   r8   c                        e Zd ZdededdfdZy)OSC_Linkurltextr9   Nc                      || _         || _        y rC   )r   r   )r>   r   r   s      r?   r@   zOSC_Link.__init__   s    	rA   )r   r   r   r   r@   r   rA   r?   r   r      s    C s t rA   r   charr9   c                 P    t        t        |             }|t        v r	t        |   S | S rC   )hexordVT100_BOX_CODES)r   char_hexs     r?   map_vt100_box_coder     s&    3t9~H(0O(C?8$MMrA   r   c                 ,    | r| j                  d      ryy)N
FT)endswith)r   s    r?   _needs_extra_newliner     s    4==&rA   c                       e Zd Zy)CursorMoveUpN)r   r   r   r   rA   r?   r   r     s    rA   r   c                   F    e Zd ZU eed<   eed<   eed<   eed<   ee   ed<   y)
Attributesdark_bg	line_wrap	font_sizebodystylesN)r   r   r   r   __annotations__r   r   r   rA   r?   r   r     s     MON
IHrA   r   c                   l   e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 d!d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ZdedefdZdedefdZ	dede
eee   f   fdZdedee   deeeeef      fdZdedee   dedeeeef      fdZdeeeeef      deeeef      fdZ	 d"dededefdZ	 d#dedededefdZdefd Zy)$Ansi2HTMLConverterzConvert Ansi color codes to CSS+HTML

    Example:

    >>> conv = Ansi2HTMLConverter()
    >>> ansi = " ".join(sys.stdin.readlines())
    >>> html = conv.convert(ansi)
    latexinliner   r   r   linkifyescapedmarkup_linesoutput_encodingschemetitler9   Nc                 R   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        |  d| _        |rbt        t        | j                  | j                  | j                        D cg c]  }|j                  j                  d      |f! c}      | _        t#        j$                  d      | _        t#        j$                  d      | _        t#        j$                  d      | _        t#        j$                  d      | _        y c c}w )NF.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   klassstripr   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   items                r?   r@   zAnsi2HTMLConverter.__init__$  s    
""(.
 !+4<< U ZZ%%c*D1DK %'JJ$?!!zz*GH::=

 ::&NOs   $D$linec                     t        |t              s|S | j                  r| j                  j	                  d|      S | j                  j	                  d|      S )Nz	\\url{\1}z<a href="\1">\1</a>)
isinstancer   r   r   sub)r>   r   s     r?   
do_linkifyzAnsi2HTMLConverter.do_linkifyQ  sK    $$K::##''d;;##$:DAArA   partc                     | j                   r$d| _        d|j                  d|j                  dS d|j                  d|j                  dS )NTz\href{z}{}z	<a href="z">z</a>)r   r   r   r   )r>   r   s     r?   handle_osc_linksz#Ansi2HTMLConverter.handle_osc_linksY  s=    :: DM+/88TYY??  -1HHdii@@rA   r   c           	          t               } j                  ||      } j                  |      }t        |      }dt        t
        t        t        f      dt        t           f fd}t         ||            }dj                  |      } j                  rM j                  sAdj                  t        |j                  d            D 	cg c]  \  }}	d||	fz   c}	}      }||fS c c}	}w )Npartsr9   c              3      K   | D ]_  }t        |t              r%j                  rj                  |       3| 8t        |t              rj                  |       \| a y wrC   )r   r   r   r   r   r   )r   r   r>   s     r?   _check_linksz4Ansi2HTMLConverter.apply_regex.<locals>._check_linkse  s[      	dC(||"ood33"
h///55J	s   A&A) r   z<span id="line-%i">%s</span>)set_apply_regex_collapse_cursorlistr   r	   r   r   r   joinr   r   	enumeratesplit)
r>   r   styles_used	all_partsno_cursor_partsr   r   combinedir   s
   `         r?   apply_regexzAnsi2HTMLConverter.apply_regex_  s     #%%dK8	//	:/
	U3=%9 : 
	x} 
	 \/23775>TZZyy $-X^^D-A#B4 7!TBH $$s   	C&
r   c              #   <   K    j                   rO j                  rt        g       }nt        g d      }|j                         D ]  \  }}j	                  ||       dt
        t           f fd}dj                   |             dt        dt
        t        t        t        f      f fd}t               } |      D ]2  }	t        |	t              r|	  j                  |	||      E d {    4 |j                  r j                  rd y d y y 7 )w)	N))&z&amp;)<z&lt;)>z&gt;r9   c               3     K   d} d}j                   j                        D ]V  }| |j                          }|r|D ]  }t        |        n| |j	                         } |j                         d   dk(  }X | d   y w)Nr   F0)r   finditerstartr   endgroups)last_endbox_drawing_modematchtrailerr   r   r>   s        r?   _vt100_box_drawingz;Ansi2HTMLConverter._apply_regex.<locals>._vt100_box_drawing  s     H$22;;DA <x%++-8# ' 70667 "M 99;#(<<>!#4#; < xy/!s   BBr   r   c              3     K   d}j                   j                  |       D ]]  }| ||j                          }| |j                         d   }|j                         d   }t	        ||       |j                         }_ | |d   y w)Nr   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r>   s         r?   	_osc_linkz2Ansi2HTMLConverter._apply_regex.<locals>._osc_link  s     H))2248 'x%++-8llnQ'||~a(sD)) 99;' xy/!s   BB	r   </span>)r   r   r   itemsreplacer   r   r   r	   r   r8   r   _handle_ansi_coder;   )
r>   r   r   specialspatternspecialr   r   stater   s
   ``        r?   r   zAnsi2HTMLConverter._apply_regex|  s     <<

&r?& %-NN$4 6 ||GW56	"HSM 	" ww)+,		"C 		"HU3=-A$B 		" dO 	LD$)
11$UKKK		L
 zz		  Ls   C,D0D1*Dr   c           
   #     K   d}| j                   j                  |      D ]l  }|||j                           |j                         }|j	                         \  }}|dvrA|dk(  rt                S	 t        |      }|j                  dd      }|j                  dd      }t        |      |k(  rn?	 t        j                  d	|      D 	cg c]  }	t        |	       }}	d }
d
}t        |      D ]C  \  }}||k  r|t        k(  r|}
|t        t        fv s'	 ||dz      }|t"        k(  }|rdnd}||z   }E |
D||
dz   d  }|j$                  rd|_        | j&                  rd nd |j)                          |s[d
}t        |      D ]  \  }}||k  r|t        t        fv }	 ||dz      }|t"        k(  }|t*        k(  }|r|r	 t-        ||dz            }|dz   }n3|r/|r-	 |j/                  |||dz      ||dz      ||dz             |dz   }d }|j1                  ||        |j$                  r| j&                  rd nd d|_        |j3                         }|s=|j5                  |       | j6                  r| j8                  j5                  t;                      | j&                  rY|D cg c]C  }| j8                  |   j<                  d   d   dk(  r| j8                  |   j<                  d   d   E }}d|d   z   n|D cg c])  }|| j8                  v r| j8                  |   j>                  + }}ddjA                  |      z   n9| j&                  rddjA                  |      z   nddjA                  |      z   d|_        o ||d   y c c}	w # t        $ r t        g}Y w xY w# t         $ r d
}Y w xY w# t         $ r d
}Y )w xY w# t         $ r Y \w xY w# t         $ r Y lw xY wc c}w c c}w w)Nr   mMAATz:::z;;;z[;:]r   r   r   Fr   r   r   )rW   r|   z\textcolor[HTML]{%s}{z<span style="%s">z; z\textcolor{%s}{ z<span class="%s">)!r   r   r   r   r   r   lenr   r   r   r   
ValueErrorANSI_FULL_RESETr   re   rj   
IndexErrorANSI_256_COLOR_IDr;   r   r<   ANSI_TRUECOLOR_IDr   rs   rl   r   updater   r   r   kwlkwr   )r>   r   r   r   r   r   paramscommand	param_lenxlast_null_indexskip_after_indexr   vx_bit_color_idis_256_colorshiftis_x_bit_coloris_truecolorrW   r   r   rG   s                          r?   r   z$Ansi2HTMLConverter._handle_ansi_code  sx     ))2248 |	%Ex%++-00yy{H $llnOFGe# #~"n$K	c2c2v;)+ +*,((66*BCQ#a&CC
 #O!!&) 11(('&'O?O<<,)/A $25F#FL!-A1E'(5y$1  *! 3 56$$(-E%zz!	'  "!&) 51((!"&H!H(%+AE]N  .1BB-1BB!l!36va!e}3E	 ()1u$#!..va!e}fQUmVAE]
 ()1u$ $IQ)495<   ::I#O$)!..0K{+{{""#7#9::: &1!;;u-11!4Q77B E*..q1!4E 
 3U1X== &1! DKK/ E*--E 
 .		%0@@@::,sxx/DDD-0EEE $Ey|	%z 89oM D +)*+ & ,)+,: " (%'N( & ! ! & ! !.s   B1P4NNN 5PN4BP#O+PO
P&O(B)P-AO85P.O=4A$PNN1-P0N11P4O?POPOPOP	O%!P$O%%P(	O51P4O55Pr   c                 f   g }|D ]  }|st        |t              r|r|j                          |rnt        |d   t              st        |d   t              rHd|d   vrA|j                          |r/t        |d   t              r&t        |d   t              rd|d   vrA|j                  |        |S )z=Act on any CursorMoveUp commands by deleting preceding tokensr   r   )r   r   popr   r   ry   )r>   r   final_partsr   s       r?   r   z#Ansi2HTMLConverter._collapse_cursor9  s    
 35 	%D  $-OO%!{29";r?C8TUW=X  OO% "{29";r?C8TUW=X
  t$-	%0 rA   ensure_trailing_newlinec                     | j                  |      \  }}|rt        |      r|dz  }| 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>   r   r  r   r   s        r?   preparezAnsi2HTMLConverter.prepareY  s^    
 ''-f"';D'ADLD ||
 {{rA   fullc                    | j                  ||      |sd   S | j                  rt        }nt        }t	        | j
                  | j                  | j                        }|dd }t        fd|      }|dj                  t        t        t        |t        |      z                     | j                  | j                  d   | j                  | j                   rdd	z  S dd	z  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                 D    | j                   j                  d      d   v S )Nr   r   )r   lstrip)eattrss    r?   <lambda>z,Ansi2HTMLConverter.convert.<locals>.<lambda>  s    aggnnS)U8_< rA   r   z\usepackage{hyperref}r   )rG   r   r   contentr   r   )r  r   _latex_template_html_templater   r   r   r   filterr   r   mapr   r   r   r   r   )	r>   r   r  r  	_template
all_stylesbackgroundsused_stylesr  s	           @r?   convertzAnsi2HTMLConverter.convertm  s     T;RS= ::'I&IdnndkkJ
 !n<j
 YYtC[4;L-L$MNOZZV}#3348MM0
 
 	
 HJ
 
 	
rA   c                     dddj                  t        t        t        | j                  | j
                  | j                                    iz  S )Nz+<style type="text/css">
%(style)s
</style>
rG   r   )r   r$  r   r   r   r   r   r=   s    r?   produce_headersz"Ansi2HTMLConverter.produce_headers  sB    ?TYYCDLL$..$++NOC
 
 	
rA   )FFTTnormalFTFutf-8	ansi2htmlr   )r   F)TF)r   r   r   __doc__r   r   r@   r   r   r   r   r   r   r   r	   r   r   r8   r   r   r   r   r  r)  r+  r   rA   r?   r   r     s     !"&!+P+P +P 	+P
 +P +P +P +P +P +P +P +P 
+PZBs Bs BAX A# A% %c3s8m(< %:8 8 &)#h8 	%X|34	58 tAA&)#hA7=A	%\)*	+AFeC<$?@A	eCM"	#B ?D7;	* MR

#
EI
	
<
 
rA   r   c                    	 t        t        j                               } t        d      }t	        j
                  t        j                  d|z        }|j                  dddddd	
       |j                  dddddd
       |j                  dddddd
       |j                  dddddd
       |j                  dddddd       |j                  ddd ddd!
       |j                  d"d#d$ddd%
       |j                  d&d'd(ddd)
       |j                  d*d+d,d-d.d/
       |j                  d0d1d2ddd3
       |j                  d4d5d6d7d8       |j                  d9d:d6d7d;       |j                  d<d=d>d?d| d@| z  A       |j                  dBdCdDdEdFG       |j                         \  	}t        	j                  	j                  	j                   	j                   	j                  	j                   	j"                  	j$                  	j&                  	j(                  	j*                  H      }t-        t.        j0                  dI      rpt3        t.        j0                  t4        j6                        sHt.        j0                  j9                         }t5        j:                  |	j<                  dJ      t.        _        dRdKt>        dLt>        dMdNf	fdO}	j@                  r ||jC                         dEP       yNtE        	jF                  xs 	j                         }|jI                  dEjK                  t.        j0                  jM                               |d-Q      } ||dEP       yN)Sz
    $ 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.)destrw   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.)r4  metavarrw   r6  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)r4  r9  rw   choicesr6  z-tz--titleoutput_titler   zSpecify output title)r4  rw   r6  )r   r   r   r   r   r   r   r   r   r   r   detachr   output_unicoder   r9   Nc                    t        t        j                  d      rH| |z   j                  j                        }t        j                  j
                  j                  |       y t        j                  j                  | |z          y )Nbuffer)hasattrsysstdoutencoder   rD  write)rB  r   output_bytesoptss      r?   _printzmain.<locals>._print#  s[    3::x(*S0889M9MNLJJ##L1JJ^c12rA   )r   )r  r  )r   )'sortedr
   keysr   optparseOptionParsermainr/  
add_option
parse_argsr   r   r   r:  r;  r   r   r   r   r   r   r@  rE  rF  stdinr   ioStringIOrA  TextIOWrapperr=  r   r7  r+  r   r2  r)  r   	readlines)
scheme_namesversion_strparserargsconvinput_bufferrL  r  ru   rK  s
            @r?   rQ  rQ    s    &++-(L+&K""llK+$=F G   /   8   ,   6   5   %   -   9   ?   %   &   K   inb?U   ""$JD$jj{{)))'''..&&,,{{D syy(#J		2;;- yy'')$$\43F3F	R	3s 3 3 3 ||t##%2.DLL/DKK00D\\
		##%&T4  F 6rrA   r   )DrU  rO  r   rF  collectionsr   typingr   r   r   r   r   r	   ansi2html.styler
   r   r   r   version_infoimportlib.metadatar   importlib_metadatar   typing_extensionsr   rY   rZ   rD   r[   rF   r\   r]   rH   r^   rJ   r_   rL   rN   r`   ra   rb   re   rP   rf   rg   rj   rR   rk   rT   rc   rd   rh   ri   r  r  r   r!  r"  r8   r   r   r   r   r   r   r   r   rQ  r   rA   r?   <module>rf     s  . 
  	 
 # > >  v**v +                    %' "%' "%( "%( "   $"x xv NS NS N
s t 	 	 v
 v
r`rA   