
    ֤i                     <    d dl mZmZmZmZ ddlmZ  G d d      Zy)    )IterableListOptionalSequence   )Literalc            
          e Zd ZdZddefdZedefd       ZdefdZ		 dd	e
e
e      d
ee   deeed         defdZddededee   defdZdde
e   dedefdZdededefdZddededefdZdedefdZdedefdZdefdZd Zy) MarkdownRendererz*Simple helper for generating raw Markdown.no_emojic                      g | _         || _        y)z[Initialize the renderer.

        no_emoji (bool): Don't show emoji in titles etc.
        N)datar   )selfr   s     `/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/wasabi/markdown.py__init__zMarkdownRenderer.__init__	   s    
 	     returnc                 8    dj                  | j                        S )z%RETURNS (str): The Markdown document.z

)joinr   )r   s    r   textzMarkdownRenderer.text   s     {{499%%r   contentc                 :    | j                   j                  |       y)zdAdd a string to the Markdown document.

        content (str): Add content to the document.
        N)r   append)r   r   s     r   addzMarkdownRenderer.add   s    
 			!r   Nr   headeraligns)rclc           
         dgt        |      z  t              t        |      k7  r&dj                  t        |            }t        |      d dj                  dj                  |            }dj                  dj                  fdt	        t        |            D                    }dj                  d |D              }d	j                  |||      S )
a  Create a Markdown table.

        data (Iterable[Iterable[str]]): The body, one iterable per row,
            containig an interable of column contents.
        header (Sequence[str]): The column names.
        aligns (Optional[Sequence[Literal["r", "c", "l"]]]): Optional alignment-mode for each column. Values should
            either be 'l' (left), 'r' (right), or 'c' (center). Optional.
        RETURNS (str): The rendered table.
        r   z&Invalid aligns: {} (header length: {})c                 "    | dk(  rdS | dk(  rdS dS )Nr   z:---:r   z---:z--- )as    r   <lambda>z(MarkdownRenderer.table.<locals>.<lambda>1   s    18 18 QV r   | {} | | c              3   4   K   | ]  } |           y wNr!   ).0ir   get_dividers     r   	<genexpr>z)MarkdownRenderer.table.<locals>.<genexpr>4   s     J!{6!9-Js   
c              3   \   K   | ]$  }d j                  dj                  |             & yw)r$   r%   N)formatr   )r(   rows     r   r+   z)MarkdownRenderer.table.<locals>.<genexpr>6   s!     JcC9Js   *,z{}
{}
{})lenr.   
ValueErrorr   range)	r   r   r   r   errheaddividerbodyr*   s	      `    @r   tablezMarkdownRenderer.table   s     >US[(Fv;#f+%:AA&#f+VCS/!Vuzz&12//JJJuS[7IJJ
 yyJTJJ""4$77r   levelr   emojic                 p    |r| j                   sdj                  |      nd}dj                  d|z  ||      S )a  Create a Markdown heading.

        level (int): The heading level, e.g. 3 for ###
        text (str): The heading text.
        emoji (Optional[str]): Optional emoji to show before heading text, if enabled.
        RETURNS (str): The rendered title.
        z{}  z{} {}{}#)r   r.   )r   r8   r   r9   prefixs        r   titlezMarkdownRenderer.title9   s5     ).dmme$eVT::r   itemsnumberedc                     g }t        |      D ]L  \  }}|r%|j                  dj                  |dz   |             -|j                  dj                  |             N dj                  |      S )zCreate a non-nested list.

        items (Iterable[str]): The list items.
        numbered (bool): Whether to use a numbered list.
        RETURNS (str): The rendered list.
        z{}. {}r   z- {}r,   )	enumerater   r.   r   )r   r?   r@   r   r)   items         r   listzMarkdownRenderer.listD   se      ' 	4GAtxq1ud;<v}}T23		4
 yy!!r   urlc                 &    dj                  ||      S )zCreate a Markdown link.

        text (str): The link text.
        url (str): The link URL.
        RETURNS (str): The rendered link.
        z[{}]({})r.   )r   r   rE   s      r   linkzMarkdownRenderer.linkS   s       s++r   langc                 &    dj                  ||      S )zCreate a Markdown code block.

        text (str): The code text.
        lang (str): Optional code language.
        RETURNS (str): The rendered code block.
        z```{}
{}
```rG   )r   r   rI   s      r   
code_blockzMarkdownRenderer.code_block\   s      &&tT22r   c                 &    | j                  |d      S )zCreate Markdown inline code.

        text (str): The inline code text.
        RETURNS (str): The rendered code text.
        `_wrapr   r   s     r   codezMarkdownRenderer.codee        zz$$$r   c                 &    | j                  |d      S )zzCreate bold text.

        text (str): The text to format in boldface.
        RETURNS (str): The formatted text.
        z**rN   rP   s     r   boldzMarkdownRenderer.boldm   s     zz$%%r   c                 &    | j                  |d      S )zsCreate italic text.

        text (str): The text to italicize.
        RETURNS (str): The formatted text.
        _rN   rP   s     r   italiczMarkdownRenderer.italicu   rR   r   c                 (    dj                  |||      S )Nz{}{}{}rG   )r   r   markers      r   rO   zMarkdownRenderer._wrap}   s    vtV44r   )Fr'   )r;   )__name__
__module____qualname____doc__boolr   propertystrr   r   r   r   r   r   r7   intr>   rD   rH   rK   rQ   rT   rW   rO   r!   r   r   r
   r
      s3   4! ! &c & &"3 " >B	8x}%8 8 '-"89:	8
 
88	;3 	;c 	;(3- 	;3 	;"(3- "4 "C ", ,3 ,3 ,3s 3# 3s 3% % %& & &%3 %5r   r
   N)typingr   r   r   r   compatr   r
   r!   r   r   <module>rd      s    5 5 x5 x5r   