o
    5ti                     @   s   d dl Z d dlZd dlmZ d dlmZmZ d dlZd dl	Z	d dlm
Z
mZmZ d dlmZ ddlmZmZmZ dd	lmZ G d
d deZdS )    N)Sequence)AnyFinal)ColumnDataPropertyDataPropertyLineBreakHandling)MultiByteStrDecoder   )AlignStyleget_align_char   )TextTableWriterc                       s  e Zd ZU dZdZedZee	d< e
defddZe
defdd	Zd
eddf fddZd% fddZdedee dee ddfddZdee fddZdee fddZdee fddZdee fddZdedededefd d!Zd"ededefd#d$Z  ZS )&MediaWikiTableWriterz
    A table writer class for `MediaWiki <https://www.mediawiki.org/wiki/MediaWiki>`__ format.

        :Example:
            :ref:`example-mediawiki-table-writer`
    	mediawikiz^[\s]+[*|#]+(_MediaWikiTableWriter__RE_TABLE_SEQUENCEreturnc                 C   s   | j S N)FORMAT_NAMEself r   X/home/ubuntu/.local/lib/python3.10/site-packages/pytablewriter/writer/text/_mediawiki.pyformat_name   s   z MediaWikiTableWriter.format_namec                 C   s   dS )NTr   r   r   r   r   support_split_write   s   z(MediaWikiTableWriter.support_split_writekwargsNc                    sd   t  jdi | d| _d| _d| _d| _d| _d| _| jt	j
d ttj| _|dd| _d S )N
FT)line_break_handlingtable_style r   )super__init__column_delimiter
is_paddingis_write_header_separator_rowis_write_value_separator_rowis_write_opening_rowis_write_closing_rowupdate_preprocessorr   NOPcopydeepcopydpNOT_QUOTING_FLAGS_quoting_flagsgetr   )r   r   	__class__r   r   r!   "   s   zMediaWikiTableWriter.__init__c                    s:   | j sd S t| jr| dt| jj  t   d S )Nz|+)	is_write_headertypepyis_not_null_string
table_name_write_liner   unicode_strr    _write_headerr   r0   r   r   r8   4   s
   z"MediaWikiTableWriter._write_headerrowvaluesvalue_dp_listc                    s$     | fddt||D  d S )Nc                    s   g | ]
\}}  ||qS r   )+_MediaWikiTableWriter__modify_table_element).0valuevalue_dpr   r   r   
<listcomp>B   s    
z9MediaWikiTableWriter._write_value_row.<locals>.<listcomp>)
_write_rowzip)r   r9   r:   r;   r   r   r   _write_value_row=   s   
z%MediaWikiTableWriter._write_value_rowc                 C   s"   d}| j r|d| j  d7 }|gS )Nz{| class="wikitable"z style="")r   )r   itemr   r   r   _get_opening_row_itemsH   s   z+MediaWikiTableWriter._get_opening_row_itemsc                 C      dgS )Nz|-r   r   r   r   r   _get_header_row_separator_itemsO      z4MediaWikiTableWriter._get_header_row_separator_itemsc                 C   s   |   S r   )rH   r   r   r   r   _get_value_row_separator_itemsR   s   z3MediaWikiTableWriter._get_value_row_separator_itemsc                 C   rG   )Nz|}r   r   r   r   r   _get_closing_row_itemsU   rI   z+MediaWikiTableWriter._get_closing_row_itemscol_dpr?   stylec                 C   s>   | j j|||d}dttjt| ||}||S )N)rM   z! {{:{:s}{:s}}})	_stylerapply	dp_to_strformatr   r
   CENTERstr_get_padding_len)r   rL   r?   rM   r>   
str_formatr   r   r   _apply_style_to_header_itemX   s
   
z0MediaWikiTableWriter._apply_style_to_header_itemr>   c                 C   sB   |j tju r	d}nd}| j|d urd|  }||j j|S )Nz| {1:s}z!| style="text-align:{0:s}"| {1:s}r   )alignr
   LEFTr   searchlstriprQ   align_string)r   r>   r?   forma_stirngr   r   r   __modify_table_elementa   s   z+MediaWikiTableWriter.__modify_table_element)r   N) __name__
__module____qualname____doc__r   recompiler   r   __annotations__propertyrS   r   boolr   r   r!   r8   intr   r   rC   listrF   rH   rJ   rK   r   r   rV   r<   __classcell__r   r   r0   r   r      sB   
 	

	r   )r*   rb   collections.abcr   typingr   r   datapropertyr,   r3   r   r   r   mbstrdecoderr   rM   r
   r   r   _text_writerr   r   r   r   r   r   <module>   s    