
    h                     <    S SK JrJrJrJr  SSKJr   " S S5      rg)    )IterableListOptionalSequence   )Literalc            
       @   \ rS rSrSrSS\4S jjr\S\4S j5       r	S\4S jr
 S S
\\\      S\\   S\\\S         S\4S jjrS S\S\S\\   S\4S jjrSS\\   S\S\4S jjrS\S\S\4S jrS!S\S\S\4S jjrS\S\4S jrS\S\4S jrS\4S jrS rSrg	)"MarkdownRenderer   z*Simple helper for generating raw Markdown.no_emojic                     / U l         Xl        g)zKInitialize the renderer.

no_emoji (bool): Don't show emoji in titles etc.
Ndatar   )selfr   s     I/home/james-whalen/.local/lib/python3.13/site-packages/wasabi/markdown.py__init__MarkdownRenderer.__init__	   s    
 	     returnc                 8    SR                  U R                  5      $ )z%RETURNS (str): The Markdown document.z

)joinr   )r   s    r   textMarkdownRenderer.text   s     {{499%%r   contentc                 :    U R                   R                  U5        g)zTAdd a string to the Markdown document.

content (str): Add content to the document.
N)r   append)r   r   s     r   addMarkdownRenderer.add   s    
 			!r   Nr   headeraligns)rclc           
        ^^ Tc  S/[        U5      -  m[        T5      [        U5      :w  a&  SR                  T[        U5      5      n[        U5      eS mSR                  SR                  U5      5      nSR                  SR                  UU4S j[	        [        U5      5       5       5      5      nSR                  S U 5       5      nS	R                  XVU5      $ )
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                 &    U S:X  a  S$ U S:X  a  S$ S$ )Nr"   z:---:r!   z---:z--- )as    r   <lambda>(MarkdownRenderer.table.<locals>.<lambda>1   s    18 V18 VQV Vr   | {} | | c              3   :   >#    U  H  nT" TU   5      v   M     g 7fNr&   ).0ir    get_dividers     r   	<genexpr>)MarkdownRenderer.table.<locals>.<genexpr>4   s     J7I!{6!9--7Is   
c              3   b   #    U  H%  nS R                  SR                  U5      5      v   M'     g7f)r*   r+   N)formatr   )r.   rows     r   r1   r2   6   s$     JTcC99Ts   -/z{}
{}
{})lenr5   
ValueErrorr   range)	r   r   r   r    errheaddividerbodyr0   s	      `    @r   table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                     U(       a"  U R                   (       d  SR                  U5      OSnSR                  SU-  XB5      $ )zCreate 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   r5   )r   r@   r   rA   prefixs        r   titleMarkdownRenderer.title9   s3     ).dmme$eV::r   itemsnumberedc                     / n[        U5       HR  u  pEU(       a&  UR                  SR                  US-   U5      5        M2  UR                  SR                  U5      5        MT     SR                  U5      $ )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- {}r3   )	enumerater   r5   r   )r   rH   rI   r   r/   items         r   listMarkdownRenderer.listD   s^      'GAxq1ud;<v}}T23	 (
 yy!!r   urlc                 $    SR                  X5      $ )zoCreate a Markdown link.

text (str): The link text.
url (str): The link URL.
RETURNS (str): The rendered link.
z[{}]({})r5   )r   r   rO   s      r   linkMarkdownRenderer.linkS   s       ++r   langc                 $    SR                  X!5      $ )zCreate a Markdown code block.

text (str): The code text.
lang (str): Optional code language.
RETURNS (str): The rendered code block.
z```{}
{}
```rQ   )r   r   rT   s      r   
code_blockMarkdownRenderer.code_block\   s      &&t22r   c                 &    U R                  US5      $ )zgCreate Markdown inline code.

text (str): The inline code text.
RETURNS (str): The rendered code text.
`_wrapr   r   s     r   codeMarkdownRenderer.codee        zz$$$r   c                 &    U R                  US5      $ )zbCreate bold text.

text (str): The text to format in boldface.
RETURNS (str): The formatted text.
z**rZ   r\   s     r   boldMarkdownRenderer.boldm   s     zz$%%r   c                 &    U R                  US5      $ )z[Create italic text.

text (str): The text to italicize.
RETURNS (str): The formatted text.
_rZ   r\   s     r   italicMarkdownRenderer.italicu   r_   r   c                 &    SR                  X!U5      $ )Nz{}{}{}rQ   )r   r   markers      r   r[   MarkdownRenderer._wrap}   s    vV44r   r   )Fr-   )rC   )__name__
__module____qualname____firstlineno____doc__boolr   propertystrr   r   r   r   r   r   r>   intrF   rM   rR   rV   r]   ra   re   r[   __static_attributes__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>rv      s    5 5 x5 x5r   