o
    5ti&                     @   s^  U d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	m
Z
 ddlmZmZmZ ddlmZmZmZ ddlmZ erAd	d
lmZ ejdejdejdejdiZeeeef  ed< dedefddZde	dedefddZ G dd deZ!G dd de!Z"G dd de!Z#G dd de#Z$G dd  d e#Z%G d!d" d"e#Z&G d#d$ d$e&Z'G d%d& d&e#Z(dS )'    N)TYPE_CHECKINGAnyFinalOptional)Align)Colortcolor   )FontSize	FontStyle
FontWeight)DecorationLineStyleThousandSeparator)StylerInterface   )AbstractTableWriter<>^_align_char_mappingalignreturnc                 C   s   t |  S N)r   )r    r   O/home/ubuntu/.local/lib/python3.10/site-packages/pytablewriter/style/_styler.pyget_align_char   s   r   colorvaluec                 C   s   d| j  d | d S )Nz\textcolor{z}{})
color_code)r   r   r   r   r   _to_latex_rgb   s   r!   c                   @   s   e Zd ZdddZdedee fdd	Zdedefd
dZ	de
dedefddZdededefddZdededefddZdeeef fddZdS )AbstractStylerwriterr   r   Nc                 C   s   || _ |  | _d S r   )_writer_get_font_size_map_font_size_map)selfr#   r   r   r   __init__!   s   zAbstractStyler.__init__stylec                 C   s   | j |jS r   )r&   get	font_sizer'   r)   r   r   r   get_font_size%   s   zAbstractStyler.get_font_sizec                 C      dS )Nr   r   r,   r   r   r   get_additional_char_width(      z(AbstractStyler.get_additional_char_widthr   c                 C      |S r   r   r'   r   r)   r   r   r   apply+   r0   zAbstractStyler.applyc                 C   r1   r   r   r2   r   r   r   apply_align.   r0   zAbstractStyler.apply_alignc                 C   r1   r   r   r2   r   r   r   apply_terminal_style1   r0   z#AbstractStyler.apply_terminal_stylec                 C   s   i S r   r   r'   r   r   r   r%   4   r0   z!AbstractStyler._get_font_size_map)r#   r   r   N)__name__
__module____qualname__r(   r   r   strr-   intr/   r   r3   r4   r5   dictr
   r%   r   r   r   r   r"       s    
r"   c                   @   s"   e Zd Zdedee fddZdS )
NullStylerr)   r   c                 C   r.   )N r   r,   r   r   r   r-   9   r0   zNullStyler.get_font_sizeN)r7   r8   r9   r   r   r:   r-   r   r   r   r   r=   8       r=   c                   @   s`   e Zd ZdededefddZdedefddZdededefdd	Zdededefd
dZdS )
TextStylerr   r)   r   c                 C   s   | j js|S g }|jtjtjfv r|d |jtjkr!|d |jt	j
kr,|d | j jr:t||j|j|dS t||dS )Nstrike	underlinebold)r   bg_colorstyles)rE   )r$   enable_ansi_escapedecoration_liner   STRIKELINE_THROUGHappend	UNDERLINEfont_weightr   BOLDcolorize_terminalr   r   rD   )r'   r   r)   ansi_stylesr   r   r   r5   >   s   


zTextStyler.apply_terminal_stylec                 C   sL   t |j}d| g}|jd ur|jdkr|t|j |d d|S )Nz{:r   zs}r>   )r   r   paddingrJ   r:   join)r'   r)   
align_charformat_itemsr   r   r   __get_align_formatQ   s   



zTextStyler.__get_align_formatc                 C   s   |  ||S r   )_TextStyler__get_align_formatformatr2   r   r   r   r4   Z   s   zTextStyler.apply_alignc                 C   s<   |r|j tjkr|dd}|S |j tjkr|dd}|S )N, _)thousand_separatorr   SPACEreplace
UNDERSCOREr2   r   r   r   r3   ]   s   zTextStyler.applyN)	r7   r8   r9   r:   r   r5   rU   r4   r3   r   r   r   r   r@   =   s
    	r@   c                   @   s"   e Zd Zdeeef fddZdS )
HtmlStylerr   c                 C      t jdt jdt jdt jdiS )Nzfont-size:x-smallzfont-size:smallzfont-size:mediumzfont-size:larger
   TINYSMALLMEDIUMLARGEr6   r   r   r   r%   h   
   zHtmlStyler._get_font_size_mapN)r7   r8   r9   r<   r
   r:   r%   r   r   r   r   r^   g   r?   r^   c                       sv   e Zd ZG dd dZdedefddZdededef fdd	Z	dededefd
dZ
deeef fddZ  ZS )LatexStylerc                   @   sJ   e Zd ZU dZeed< dZeed< dZeed< dZeed< d	Z	eed
< dS )zLatexStyler.Commandz\bfrM   z\itITALICz\tt
TYPEWRITERz
\underlinerK   z\sout	STRIKEOUTN)
r7   r8   r9   rM   r   __annotations__rg   rh   rK   ri   r   r   r   r   Commandr   s   
 rk   r)   r   c                 C   s    d}|  ||}t|t| S )Nd)r3   len)r'   r)   dummy_valueapplied_valuer   r   r   r/   y   s   z%LatexStyler.get_additional_char_widthr   c                    s   t  ||}|s|S | |}g }|r|| |jtjkr&|| jj |jt	j
kr4|| jj
 n|jt	jkrA|| jj |jtjtjfv rR|| jj n|jtjkr_|| jj |D ]
}|d | d }qa| ||}|S N{r   )superr3   r-   rJ   rL   r   rM   rk   
font_styler   rg   rh   rG   r   rH   rI   ri   rK   _LatexStyler__apply_color)r'   r   r)   r+   commandscmd	__class__r   r   r3      s*   

zLatexStyler.applyc                 C   s   |j s|S t|j |}|S r   fg_colorr!   r2   r   r   r   __apply_color   s   zLatexStyler.__apply_colorc                 C   r_   )Nz\tinyz\smallz\normalsizez\larger`   r6   r   r   r   r%      re   zLatexStyler._get_font_size_map)r7   r8   r9   rk   r   r;   r/   r   r:   r3   rt   r<   r
   r%   __classcell__r   r   rw   r   rf   q   s    rf   c                       sh   e Zd ZdedefddZdededef fddZdededefdd	Z	dededefd
dZ
  ZS )MarkdownStylerr)   r   c                 C   s0   d}|j tjkr|d7 }|jtjkr|d7 }|S )Nr      r   )rL   r   rM   rs   r   rg   )r'   r)   widthr   r   r   r/      s   z(MarkdownStyler.get_additional_char_widthr   c                    s2   t  ||}|s|S | ||}| ||}|S r   )rr   r3   _apply_font_weight_apply_font_styler2   rw   r   r   r3      s   zMarkdownStyler.applyc                 C      |j tjkrd| d}|S )N**)rL   r   rM   r2   r   r   r   r         z!MarkdownStyler._apply_font_weightc                 C   r   )NrY   )rs   r   rg   r2   r   r   r   r      r   z MarkdownStyler._apply_font_style)r7   r8   r9   r   r;   r/   r   r:   r3   r   r   r|   r   r   rw   r   r}      s
    
r}   c                       s   e Zd ZdZdedef fddZdededef fddZ	dede
fd	d
ZdedefddZdededefddZdededefddZdededef fddZdededef fddZ  ZS )GFMarkdownStylerz5
    A styler class for GitHub Flavored Markdown
    r)   r   c                    sX   t  |}|jtjtjfv r|d7 }| |r*d}| ||}|t|t| 7 }|S )Nr~   rl   )	rr   r/   rG   r   rH   rI   _GFMarkdownStyler__use_latexr3   rm   )r'   r)   r   rn   r   rw   r   r   r/      s   
z*GFMarkdownStyler.get_additional_char_widthr   c                    sj   t  ||}|s|S | |}|r!| |}tjjd | d }| ||}|r3d| || d }|S )Nrq   r   z$$)	rr   r3   r   #_GFMarkdownStyler__escape_for_latexrf   rk   rh   (_GFMarkdownStyler__apply_decoration_line_GFMarkdownStyler__apply_colorr'   r   r)   	use_latexrw   r   r   r3      s   

zGFMarkdownStyler.applyc                 C   s
   |j d uS r   )rz   r,   r   r   r   __use_latex   s   
zGFMarkdownStyler.__use_latexc                 C   s   t dd|}|ddS )Nz[\s_]z	\\\\\g<0>-z\text{-})resubr\   )r'   r   r   r   r   __escape_for_latex   s   z#GFMarkdownStyler.__escape_for_latexc                 C   s`   |  |}|jtjtjfv r |rd| d }|S d| d}|S |jtjkr.|r.d| d }|S )Nz\enclose{horizontalstrike}{r   z~~z\underline{)r   rG   r   rH   rI   rK   r   r   r   r   __apply_decoration_line   s   
z(GFMarkdownStyler.__apply_decoration_linec                 C   s   |j s|S t|j |S r   ry   r2   r   r   r   r{     s   zGFMarkdownStyler.__apply_colorc                    <   |  |st ||S |jtjkrtjjd | d }|S rp   )r   rr   r   rL   r   rM   rf   rk   r2   rw   r   r   r     
   
z#GFMarkdownStyler._apply_font_weightc                    r   rp   )r   rr   r   rs   r   rg   rf   rk   r2   rw   r   r   r     r   z"GFMarkdownStyler._apply_font_style)r7   r8   r9   __doc__r   r;   r/   r   r:   r3   boolr   r   r   r   r   r   r|   r   r   rw   r   r      s    "	r   c                       s<   e Zd ZdedefddZdededef fddZ  Z	S )ReStructuredTextStylerr)   r   c                 C   s`   ddl m} d}|jtjkr|d7 }n
|jtjkr|d7 }|jt	j
kr.| jj|jkr.|d7 }|S )Nr   RstCsvTableWriterr   r~   )r#   r   rL   r   rM   rs   r   rg   rZ   r   COMMAr$   format_nameFORMAT_NAME)r'   r)   r   r   r   r   r   r/   %  s   
z0ReStructuredTextStyler.get_additional_char_widthr   c                    s~   ddl m} t ||}|s|S |jtjkrd| d}n|jtj	kr*d| d}|j
tjkr=| jj|jkr=d| d}|S )Nr   r   r   *")r#   r   rr   r3   rL   r   rM   rs   r   rg   rZ   r   r   r$   r   r   )r'   r   r)   r   rw   r   r   r3   7  s   zReStructuredTextStyler.apply)
r7   r8   r9   r   r;   r/   r   r:   r3   r|   r   r   rw   r   r   $  s    "r   ))r   typingr   r   r   r   datapropertyr   tcolorpyr   r   _fontr
   r   r   _styler   r   r   _styler_interfacer   writer._table_writerr   AUTOLEFTRIGHTCENTERr   r<   r:   rj   r   r!   r"   r=   r@   r^   rf   r}   r   r   r   r   r   r   <module>   s0   
 *
>#R