o
    5ti                     @   s   d dl Z d dlZd dlmZmZmZmZ d dl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 ddlmZmZmZmZmZmZmZ d	d
lmZ d	dlmZ ddlmZ ddlm Z  de!fddZ"G dd de Z#dS )    N)AnyFinalOptionalcast)MultiByteStrDecoder)replace_symbol   )EmptyTableDataError)sanitize_python_var_name)Align	FontStyle
FontWeight
HtmlStylerStyleStylerInterfaceVerticalAlign   )import_error_msg_template)AbstractTableWriter   )CssTableWriter)TextTableWriterreturnc                  C   sD   zddl m}  ddlm} | |fW S  ty!   ttd  w )Nr   )tags)rawhtml)	dominater   dominate.utilr   ImportErrorwarningswarnr   format)r   r    r"   S/home/ubuntu/.local/lib/python3.10/site-packages/pytablewriter/writer/text/_html.py_get_tags_module   s   
r$   c                       s   e Zd ZdZdZedefddZedefddZ	de
dd	f fd
dZde
dd	fddZdddZdedd	fddZdedee fddZdedefddZ  ZS )HtmlTableWriterzo
    A table writer class for HTML format.

        :Example:
            :ref:`example-html-table-writer`
    r   r   c                 C   s   | j S N)FORMAT_NAMEselfr"   r"   r#   format_name(   s   zHtmlTableWriter.format_namec                 C   s   dS )NFr"   r(   r"   r"   r#   support_split_write,   s   z#HtmlTableWriter.support_split_writekwargsNc                    sX   t  jdi | d| _|dd| _d| jj_d| jj_t	
tj| _d | _d| _d S )NFindent_stringz    z<br>r"   )super__init__
is_paddinggetr-   _dp_extractorpreprocessorline_break_replis_escape_html_tagcopydeepcopydatapropertyNOT_QUOTING_FLAGS_quoting_flags
_table_tagenable_ansi_escape)r)   r,   	__class__r"   r#   r/   0   s   


zHtmlTableWriter.__init__c              	   K   s  t  \}}|dd}| j z|   W n ty,   | jjd Y W d   dS w |   d}|rat| j	dd}|rC|d7 }nd}|d	|}t
|| j| jd
}|j| dd |jdd t| j	r|ru|jt| j	|d| _n
|jt| j	d| _|  j|t| j	j7  _n|r|j|d| _n| | _z|   W n	 ty   Y nw | |  W d   dS 1 sw   Y  dS )aw  
        |write_table| with HTML table format.

        Args:
            write_css (bool):
                If |True|, write CSS corresponding to the specified styles,
                instead of attributes of HTML tags.

        Example:
            :ref:`example-html-table-writer`

        .. note::
            - |None| values will be replaced with an empty value
        	write_cssFzno tabular data foundN-)replacement_textz-csszptw-table-css	css_class)
table_namemarginstream)is_overwrite_table_nameT)write_style_tag)id
class_name)rH   )rI   )r$   r1   _logger_verify_propertyr	   loggerdebug_preprocessr   rC   r   rD   rE   from_writerwrite_tabletypepyis_not_null_stringtabler
   r;   captionr   unicode_str_write_header
ValueError_write_body)r)   r,   r   r   r?   rB   default_css_class_name
css_writerr"   r"   r#   rP   =   sT   




"zHtmlTableWriter.write_tablec                 C   sv   t  \}}| js
d S t| jrtd| }| jD ]}|||t|j	7 }q|
 }||7 }|  j|7  _d S )Nzheaders is empty)r$   is_write_headerrQ   is_empty_sequence_table_headersrW   trthr   rU   theadr;   )r)   r   r   tr_tagheader	thead_tagr"   r"   r#   rV      s   

zHtmlTableWriter._write_header
write_attrc                 C   s  t  \}}| }tt| j| jD ]]\}\}}| }t||| jD ]G\}	}
}||t	|	j
}| |||
}|rf|jtjkrH|
jj|d< n|jj|d< |jtjkrZ|jj|d< | j|d}|rf||d< ||7 }q#||7 }q|  j|7  _| | jj| jd d S )Nalignvalign)stylerg   )indent)r$   tbody	enumeratezip_table_value_matrix_table_value_dp_matrixr^   _column_dp_listtdr   rU   _fetch_stylere   r   AUTOalign_stringvertical_alignr   BASELINE	align_str _HtmlTableWriter__make_style_tagr;   _write_linerenderr-   )r)   rd   r   r   	tbody_tagrow_idxvaluesvalue_dp_listra   valuevalue_dp	column_dptd_tagrg   	style_tagr"   r"   r#   rX      s,   


zHtmlTableWriter._write_bodyrg   c                 C   sf   g }| j |r|tt| j | |jtjkr|d |jt	j
kr*|d |s.d S d|S )Nzfont-weight:boldzfont-style:italicz; )_stylerget_font_sizeappendr   strfont_weightr   BOLD
font_styler   ITALICjoin)r)   rg   stylesr"   r"   r#   __make_style_tag   s   


z HtmlTableWriter.__make_style_tagwriterc                 C   s   t |S r&   )r   )r)   r   r"   r"   r#   _create_styler   s   zHtmlTableWriter._create_styler)r   N)__name__
__module____qualname____doc__r'   propertyr   r*   boolr+   r   r/   rP   rV   rX   r   r   rv   r   r   r   __classcell__r"   r"   r=   r#   r%      s    
C r%   )$r6   r   typingr   r   r   r   r8   rQ   mbstrdecoderr   pathvalidater   errorr	   	sanitizerr
   rg   r   r   r   r   r   r   r   _commonr   _table_writerr   _cssr   _text_writerr   tupler$   r%   r"   r"   r"   r#   <module>   s     $