o
    5ti9                     @   s   d dl Z d dlmZmZ d dlmZmZmZ d dlZ	d dl
Z
d dl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d
lmZmZmZmZ ddlmZ ddlmZ eG dd deZdeeedf defddZ G dd deZ!dS )    N)Enumunique)AnyFinalUnion)ColumnDataPropertyDataProperty)MultiByteStrDecoder)replace_symbol   )normalize_enum)EmptyTableDataError)AlignGFMarkdownStylerMarkdownStylerStylerInterface   )AbstractTableWriter   )IndentationTextTableWriterc                   @   s    e Zd ZdZdZdZdZdZdS )MarkdownFlavorcommon_markgithubgfmjekyllkramdownN)__name__
__module____qualname__COMMON_MARKGITHUBGFMJEKYLLKRAMDOWN r$   r$   W/home/ubuntu/.local/lib/python3.10/site-packages/pytablewriter/writer/text/_markdown.pyr      s    r   flavorreturnc                 C   s`   t | trt|  d }|dd}|} t| ttjd}|tj	kr&tj
S |tjkr.tjS |S )N_
COMMONMARKr   )default)
isinstancestrr
   stripupperreplacer   r   r   r    r!   r"   r#   )r&   
flavor_strnorm_flavorr$   r$   r%   normalize_md_flavor   s   


r2   c                       sJ  e Zd ZU dZdZej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ededef fddZdedededef 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* fddZd	edd
fddZd	edd
f fd d!Zd*d"d#Zd$ede fd%d&Z!e"d'edefd(d)Z#  Z$S )+MarkdownTableWriterzn
    A table writer class for Markdown format.

    Example:
        :ref:`example-markdown-table-writer`
    markdownDEFAULT_FLAVORr'   c                 C   s   | j S N)FORMAT_NAMEselfr$   r$   r%   format_name7   s   zMarkdownTableWriter.format_namec                 C   s   dS )NTr$   r8   r$   r$   r%   support_split_write;   s   z'MarkdownTableWriter.support_split_writekwargsNc                    s   t |d| j| _t jdi | d| _d| _d| _d| _	d| _
d| _d| _d| _d| _d| _d| _ttj| _d| j_|   d S )Nr&    |Tr   r$   )r2   popr5   _MarkdownTableWriter__flavorsuper__init__indent_stringcolumn_delimiterchar_left_side_rowchar_right_side_rowchar_cross_pointchar_header_row_cross_point char_header_row_left_cross_point!char_header_row_right_cross_pointis_write_opening_row_use_default_header_is_require_headercopydeepcopydpNOT_QUOTING_FLAGS_quoting_flags_dp_extractormin_column_width_init_cross_point_mapsr9   r<   	__class__r$   r%   rB   ?   s    zMarkdownTableWriter.__init__col_dpvalue_dpc                    s   |  t ||S r6   )._MarkdownTableWriter__escape_vertical_bar_charrA   _to_header_item)r9   rY   rZ   rW   r$   r%   r\   V   s   z#MarkdownTableWriter._to_header_itemrow_idxc                    s   |  t |||S r6   )r[   rA   _to_row_item)r9   r]   rY   rZ   rW   r$   r%   r^   Y   s   z MarkdownTableWriter._to_row_itemc                 C      g S r6   r$   r8   r$   r$   r%   _get_opening_row_items\      z*MarkdownTableWriter._get_opening_row_itemsc                 C   s   g }d| j  }| jD ];}| |}| |j|j}|tjkr'd|d  d }n|tjkr7dd|d   d }nd| }|	dj
||d q
|S )N -r   :r   z{margin}{item}{margin})marginitem)re   _column_dp_list_get_padding_len
_get_aligncolumn_indexalignr   RIGHTCENTERappendformat)r9   header_separator_listre   rY   padding_lenrk   separator_itemr$   r$   r%   _get_header_row_separator_items_   s   




z3MarkdownTableWriter._get_header_row_separator_itemsc                 C   r_   r6   r$   r8   r$   r$   r%   _get_value_row_separator_itemst   ra   z2MarkdownTableWriter._get_value_row_separator_itemsc                 C   r_   r6   r$   r8   r$   r$   r%   _get_closing_row_itemsw   ra   z*MarkdownTableWriter._get_closing_row_itemsc                    s&   t    | jtjkr|   d S d S r6   )rA   _write_headerr@   r   r#   _write_liner8   rW   r$   r%   rv   z   s   
z!MarkdownTableWriter._write_headerc              	   K   s   d|v rt |d }|| jkr|   || _| jr| | | _| jB z|   W n ty@   | jj	d Y W d   dS w | 
  | jdi | | jr\|   W d   dS W d   dS 1 sgw   Y  dS )a  
        |write_table| with Markdown table format.

        Args:
            flavor (Optional[str]):
                possible flavors are as follows (case insensitive):

                    - ``"CommonMark"``
                    - ``"gfm"``
                    - ``"github"`` (alias of ``"gfm"``)
                    - ``kramdown``
                    - ``Jekyll`` (alias of ``"kramdown"``)

                Defaults to ``"CommonMark"``.

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

        .. note::
            - |None| values are written as an empty string
            - Vertical bar characters (``'|'``) in table items are escaped
        r&   zno tabular data foundNr$   )r2   r@   _clear_preprocess_create_styler_styler_logger_verify_propertyr   loggerdebug#_MarkdownTableWriter__write_chapter_write_tableis_write_null_line_after_tablewrite_null_line)r9   r<   
new_flavorr$   r$   r%   write_table   s,   

	"zMarkdownTableWriter.write_tablec                    s   |    t   d S r6   )r   rA   _write_table_iterrV   rW   r$   r%   r      s   z%MarkdownTableWriter._write_table_iterc                 C   sP   t | jrd S | dd| jd  t| jj | jt	j
kr&|   d S d S )Nz	{:s} {:s}#r   )typepyis_null_string
table_namerw   ro   _indent_levelr	   unicode_strr@   r   r#   r8   r$   r$   r%   __write_chapter   s   z#MarkdownTableWriter.__write_chapterwriterc                 C   s   | j tjkr
t|S t|S r6   )r@   r   r!   r   r   )r9   r   r$   r$   r%   ry      s   z"MarkdownTableWriter._create_stylervaluec                 C   s   |  ddS )Nr>   z\|)r/   )r   r$   r$   r%   __escape_vertical_bar_char   s   z.MarkdownTableWriter.__escape_vertical_bar_char)r'   N)%r   r   r   __doc__r7   r   r   r5   r   __annotations__propertyr,   r:   boolr;   r   rB   r   r   r\   intr^   listr`   rs   rt   ru   rv   r   r   r   r   r   ry   staticmethodr[   __classcell__r$   r$   rW   r%   r3   ,   s,   
 -
r3   )"rN   enumr   r   typingr   r   r   datapropertyrP   r   r   r   mbstrdecoderr	   pathvalidater
   	_functionr   errorr   styler   r   r   r   _table_writerr   _text_writerr   r   r,   r2   r3   r$   r$   r$   r%   <module>   s"    