
    yj<                     :   d dl mZmZmZmZ d dlmZ d dlZd dlZ ej	        d          Z
 ej	        dej                  Z ej	        d          Z ej	        d          Z ej	        d          Zd	Zd
ZdZeZdZdZdZdZd Zd Zd Z G d de          Zd ZdS )    )BeautifulSoupNavigableStringCommentDoctype)fillNzconvert_h(\d+)^z[\t ]+z[\s]+zh[1-6]atx
atx_closed
underlinedspaces	backslash*_c                 |    | r| d         dk    rdnd}| r| d         dk    rdnd}|                                  } ||| fS )z
    If the text in an inline tag like b, a, or em contains a leading or trailing
    space, strip the string and return a space as suffix of prefix, if needed.
    This function is used to prevent conversions like
        <b> foo</b> => ** foo**
    r     )strip)textprefixsuffixs      d/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/markdownify/__init__.pychompr      sR     3T!W^^SSF4T"X__SS"F::<<DFD!!    c                       fd}|S )aY  
    This abstracts all simple inline tags like b, em, del, ...
    Returns a function that wraps the chomped text in a pair of the string
    that is returned by markup_fn, with '/' inserted in the string used after
    the text if it looks like an HTML tag. markup_fn is necessary to allow for
    references to self.strong_em_symbol etc.
    c                     |           }|                     d          r#|                    d          rd|dd          z   }n|}|                    g d          r|S t          |          \  }}}|sdS |||||S )N<>z</   precodekbdsampr   )
startswithendswithfind_parentr   )	selfelr   convert_as_inlinemarkup_prefixmarkup_suffixr   r   	markup_fns	           r   implementationz2abstract_inline_conversion.<locals>.implementation2   s    !	$##C(( 	*]-C-CC-H-H 	* =#44MM)M>>88899 	K$T{{ 	2%v}}ddMM66RRr    )r-   r.   s   ` r   abstract_inline_conversionr0   *   s)    S S S S S r   c                 T     t           fdt                     D                       S )Nc              3   f   K   | ]+}|                     d           |t          |          fV  ,dS )r   N)r%   getattr).0kobjs     r   	<genexpr>z_todict.<locals>.<genexpr>B   sA      PPall3>O>OPGCOO$PPPPPPr   )dictdir)r6   s   `r   _todictr:   A   s,    PPPPc#hhPPPPPPr   c                      e Zd Z G d d          Z G d de          Zd Zd Zd Zd)d	Zd
 Z	d Z
d Zd Zd Zd Zd Z ed           Zd Zd Zd Z ed           Z ed           ZeZd Zd ZeZd Zd ZeZeZd Zd Z d Z!d Z"d Z#eZ$eZ%eZ& ed            Z' ed!           Z(d" Z)d# Z*d$ Z+d% Z,d& Z-d' Z.d(S )*MarkdownConverterc                   V    e Zd ZdZdZdZdZdZdZdZ	dZ
dZeZg ZeZdZeZdZdZdZdZdS ) MarkdownConverter.DefaultOptionsTz*+-r   NFP   )__name__
__module____qualname__	autolinksbulletscode_languagecode_language_callbackconvertdefault_titleescape_asterisksescape_underscoresescape_misc
UNDERLINEDheading_stylekeep_inline_images_inSPACESnewline_styler   ASTERISKstrong_em_symbol
sub_symbol
sup_symbolwrap
wrap_widthr/   r   r   DefaultOptionsr>   F   sm        	!%!" "#




r   rW   c                       e Zd ZdS )MarkdownConverter.OptionsN)r@   rA   rB   r/   r   r   OptionsrY   Z   s        r   rZ   c                    t          | j                  | _        | j                            t          | j                             | j                            |           | j        d         | j        d         t          d          d S d S )Nr   rG   zFYou may specify either tags to strip or tags to convert, but not both.)r:   rW   optionsupdaterZ   
ValueError)r(   r\   s     r   __init__zMarkdownConverter.__init__]   s     t233GDL11222G$$$< ,i1H1T 7 8 8 8 -,1T1Tr   c                 L    t          |d          }|                     |          S )Nzhtml.parser)r   convert_soup)r(   htmlsoups      r   rG   zMarkdownConverter.convertg   s%    T=11  &&&r   c                 2    |                      |dd          S )NFT)r*   children_only)process_tag)r(   rc   s     r   ra   zMarkdownConverter.convert_soupk   s    TRRRr   Fc                 ,   d}t                               |j                  d u}|j        dv }|}|s|s|rd}d } ||          r|j        D ]}	|	j         p'|	j         p ||	j                  p ||	j                  }
t          |	t                    r@t          j	        |	          
                                dk    r|
r|	                                 |j        D ]t}	t          |	t                    st          |	t                    r-t          |	t                    r||                     |	          z  }[||                     |	|          z  }u|sBt!          | d|j        z  d           }|r'|                     |j                  r ||||          }|S )Nr   )tdthTc                     | o| j         dv S )N)
olullitabletheadtbodytfoottrrh   ri   name)r)   s    r   is_nested_nodez5MarkdownConverter.process_tag.<locals>.is_nested_node{   s     8"' &8 8 8r   z
convert_%s)html_heading_rematchrt   childrenprevious_siblingnext_sibling
isinstancer   six	text_typer   extractr   r   process_textrf   r3   should_convert_tag)r(   noder*   re   r   	isHeadingisCellconvert_children_as_inlineru   r)   can_extract
convert_fns               r   rf   zMarkdownConverter.process_tagn   s    $))$)44D@	l*%6" 	.) 	.v 	.)-&	8 	8 	8
 >$ 	!m ! ! $&#66  B&(o"5 B"0.1D"E"E B #1."A"A  r?33 !M"--3355;;' <JJLLL - 	I 	IB"g&& I*R*A*A IB00 I))"---((-GHHH 	A |di'?FFJ Ad55di@@ A!z$.?@@r   c                 \   t          j        |          pd}|                    d          st                              d|          }|                    g d          s|                     |          }|j        j        dk    r)|j        r|j        j        dv r|	                                }|S )Nr   r!   r   r    rm   rl   rk   )
r|   r}   r'   whitespace_resubescapeparentrt   rz   rstrip)r(   r)   r   s      r   r   zMarkdownConverter.process_text   s    }R  &B ~~e$$ 	0 $$S$//D ~~<<<== 	%;;t$$D
 INd"" #,<<;;==Dr   c                      t                               |          }|rJt          |                    d                     fd}dz  |_        t           |j        |           |S t          |          )Nr   c                 4                         | ||          S )N)
convert_hn)r)   r   r*   nr(   s      r   convert_tagz2MarkdownConverter.__getattr__.<locals>.convert_tag   s    q"d4EFFFr   zconvert_h%s)convert_heading_rerw   intgroupr@   setattrAttributeError)r(   attrmr   r   s   `   @r   __getattr__zMarkdownConverter.__getattr__   s    $$T** 	AGGAJJAG G G G G G $11#4K D+.<<<T"""r   c                 z    |                                 }| j        d         }| j        d         }|||vS |||v S dS )Nr   rG   T)lowerr\   )r(   tagr   rG   s       r   r   z$MarkdownConverter.should_convert_tag   sM    iikkW%,y)e## '>!4r   c                    |sdS | j         d         r,t          j        dd|          }t          j        dd|          }| j         d         r|                    dd	          }| j         d
         r|                    dd          }|S )Nr   rK   z([\\&<`[>~#=+|-])z\\\1z([0-9])([.)])z\1\\\2rI   r   z\*rJ   r   \_)r\   rer   replace)r(   r   s     r   r   zMarkdownConverter.escape   s     	2<& 	=6.>>D6*It<<D<*+ 	,<<U++D<,- 	,<<U++Dr   c                 F    |rt                               d|z  |          ndS )N	r   )line_beginning_rer   )r(   r   levels      r   indentzMarkdownConverter.indent   s'    <@H $$TE\4888bHr   c                 f    |pd                                 }|r|d|t          |          z  dndS )Nr   


)r   len)r(   r   pad_chars      r   	underlinezMarkdownConverter.underline   sA    
""$$>BJtttXD		%9%9%9::Jr   c                 |   t          |          \  }}}|sdS |                    d          }|                    d          }| j        d         r.|                    dd          |k    r|s| j        d         sd|z  S | j        d         r|s|}|rd	|                    d
d          z  nd}|r|d|d||d|n|S )Nr   hreftitlerC   r   r   rH   z<%s> "%s""\"[]())r   getr\   r   )	r(   r)   r   r*   r   r   r   r   
title_parts	            r   	convert_azMarkdownConverter.convert_a   s    $T{{ 	2vvf~~wL% 	!LL,,44 5_5 5 D= <( 	 	E<AIWu}}S%8888r
NR\666444zzz66JJX\\r   c                 "    d| j         d         z  S )N   rR   r\   r(   s    r   <lambda>zMarkdownConverter.<lambda>   s    DLI[<\8\ r   c                 x    |r|S |r3dt                               d|                                          dz   z   ndS )Nr   z> r   r   )r   r   r   r(   r)   r   r*   s       r   convert_blockquotez$MarkdownConverter.convert_blockquote   sC     	KNRZt(,,T4::<<@@6IJJXZZr   c                 b    |rdS | j         d                                         t          k    rdS dS )Nr   rP   z\
z  
)r\   r   	BACKSLASHr   s       r   
convert_brzMarkdownConverter.convert_br   s7     	2<(..00I==66r   c                 b    |j         j        dk    r|S t          d           } || |||          S )Nr!   c                     dS )N`r/   r   s    r   r   z0MarkdownConverter.convert_code.<locals>.<lambda>	  s    C r   )r   rt   r0   )r(   r)   r   r*   	converters        r   convert_codezMarkdownConverter.convert_code  s>    9>U""K./?/?@@	yr4):;;;r   c                     dS )Nz~~r/   r   s    r   r   zMarkdownConverter.<lambda>  s    $ r   c                     | j         d         S )NrR   r   r   s    r   r   zMarkdownConverter.<lambda>  s    FX9Y r   c                    |r|S | j         d                                         }|                                }|t          k    r&|dk    r |dk    rdnd}|                     ||          S d|z  }|t
          k    r|d|d|dS |d|dS )	NrM   r   r   =-#r   r   )r\   r   r   rL   r   
ATX_CLOSED)r(   r   r)   r   r*   stylelinehashess           r   r   zMarkdownConverter.convert_hn  s     	K_-3355zz||J166q&&33cD>>$---qJ%+VVTTT666::$ffddd++r   c                     dS )Nz

---

r/   r   s       r   
convert_hrzMarkdownConverter.convert_hr   s    }r   c                 :   |j                             dd           pd}|j                             dd           pd}|j                             dd           pd}|rd|                    dd          z  nd}|r|j        j        | j        d         vr|S d	|d
||dS )Naltr   srcr   r   r   r   rN   z![r   r   )attrsr   r   r   rt   r\   )r(   r)   r   r*   r   r   r   r   s           r   convert_imgzMarkdownConverter.convert_img%  s    hll5$''-2hll5$''-2Wd++1r<AIWu}}S%8888r
 	IN$,7N*OOOJ #SS***55r   c                     d}d}|j         r|j         j        dvrd}|r|j        dk    rd}n	|j        }||r+d|                     |d                                          z   S ||rdndz   S )NFr   Trm   r   r   r   )rz   rt   r   r   r   )r(   r)   r   r*   nestedbefore_paragraphs         r   convert_listzMarkdownConverter.convert_list0  s    
  ? 	$r3<GG# 	w$B	  	
  	8$++dA..557777/7ttR88r   c                    |j         }||j        dk    r|                    d          rWt          |                    d                                                    r#t          |                    d                    }nd}d||                    |          z   z  }nBd}|r|j        dk    r|dz  }|j         }|| j        d         }||t          |          z           }|d|pd		                                d
S )Nrk   startr   z%s.r   rl   rD   r   r   r   )
r   rt   r   str	isnumericr   indexr\   r   r   )	r(   r)   r   r*   r   r   bulletdepthrD   s	            r   
convert_lizMarkdownConverter.convert_liF  s   &+"5"5zz'"" s6::g+>+>'?'?'I'I'K'K FJJw//00efll2&6&667FFE 7d??QJEY   l9-GUS\\12F"FFTZR$6$6$8$8$8$899r   c                 r    |r|S | j         d         rt          || j         d         dd          }|rd|z  ndS )NrU   rV   F)widthbreak_long_wordsbreak_on_hyphensz%s

r   )r\   r   r   s       r   	convert_pzMarkdownConverter.convert_pX  sY     	K< 	0"l<8).).0 0 0D #'.x$B.r   c                     |sdS | j         d         }| j         d         r | j         d         |          p|}d|d|dS )Nr   rE   rF   z
```r   z
```
r   )r(   r)   r   r*   rE   s        r   convert_prezMarkdownConverter.convert_preb  s\     	2_5<01 	XBDL)AB2FFW-M'4}}ddd;;r   c                     dS Nr   r/   r   s       r   convert_scriptz MarkdownConverter.convert_scriptl      rr   c                     dS r   r/   r   s       r   convert_stylezMarkdownConverter.convert_styleo  r   r   c                     | j         d         S )NrS   r   r   s    r   r   zMarkdownConverter.<lambda>x      $,|:T r   c                     | j         d         S )NrT   r   r   s    r   r   zMarkdownConverter.<lambda>z  r   r   c                     d|z   dz   S )Nr   r   r/   r   s       r   convert_tablezMarkdownConverter.convert_table|  s    }t##r   c                     |dz   S )Nr   r/   r   s       r   convert_captionz!MarkdownConverter.convert_caption  s    d{r   c                     d|z   dz   S )Nr   r/   r   s       r   convert_figcaptionz$MarkdownConverter.convert_figcaption  s    }v%%r   c                     d}d|j         v r/|d                                         rt          |d                   }d|                                                    dd          z   d|z  z   S Nr   colspanr   r    |r   isdigitr   r   r   r(   r)   r   r*   r   s        r   
convert_tdzMarkdownConverter.convert_td  f      R	]%:%:%<%< "Y-((GTZZ\\))$444tg~EEr   c                     d}d|j         v r/|d                                         rt          |d                   }d|                                                    dd          z   d|z  z   S r   r   r  s        r   
convert_thzMarkdownConverter.convert_th  r  r   c                 f   |                     ddg          }t          d |D                       pa|j         o|j        j        dk     pH|j         o@|j        j        dk    o0t          |j        j                             dg                    dk     }d}d}|ru|j        snd}|D ]C}	d	|	j        v r3|	d	                                         r|t          |	d	                   z  }>|dz  }D|d
d	                    dg|z            z   dz   dz   z  }n|j        s|j        j        dk    s|j        j        dk    rp|j        j        sd|d
d	                    dgt          |          z            z   dz   dz   z  }|d
d	                    dgt          |          z            z   dz   dz   z  }|dz   |z   dz   |z   S )Nrh   ri   c                 $    g | ]}|j         d k    S )ri   rs   )r4   cells     r   
<listcomp>z0MarkdownConverter.convert_tr.<locals>.<listcomp>  s    555td"555r   rp   ro   r   r   r   r   z| z | z---r   r   rn   |)
find_allallry   r   rt   r   r   r  r   join)
r(   r)   r   r*   cells
is_headrowoverliner   full_colspanr	  s
             r   
convert_trzMarkdownConverter.convert_tr  s   T4L))55u55566 y''I	'0I,Iy''wBINg,Ew#biN^NgNgiphqNrNrJsJsvwJw 	
 	 	Nb1 	NL & &
**tI/F/F/H/H* CY$8$88LL A%LL

E7\+A B BBTIDPPII% 		N9>W,,y~00!y9 1 uzz2$U*;<<<tCdJJHuzz5'CJJ*>???$FMMH#~$t+i77r   N)F)/r@   rA   rB   rW   rZ   r_   rG   ra   rf   r   r   r   r   r   r   r   r0   	convert_br   r   r   convert_del
convert_emconvert_kbdr   r   	convert_ir   r   
convert_ul
convert_olr   r   r   r   r   	convert_sconvert_strongconvert_sampconvert_subconvert_supr   r   r   r  r  r  r/   r   r   r<   r<   E   s              (    .   8 8 8' ' 'S S S0 0 0 0d  *# # #	 	 	
 
 
I I IK K K] ] ]$ +*+\+\]]I[ [ [  < < < -,->->??K++,Y,YZZJK, , ,   I	6 	6 	69 9 9& JJ: : :$/ / /< < <     INL,,-T-TUUK,,-T-TUUK$ $ $  & & &F F FF F F8 8 8 8 8r   r<   c                 @    t          di |                    |           S )Nr/   )r<   rG   )rb   r\   s     r   markdownifyr!    s$    ''w''//555r   )bs4r   r   r   r   textwrapr   r   r|   compiler   	MULTILINEr   r   all_whitespace_rerv   ATXr   rL   SETEXTrO   r   rQ   
UNDERSCOREr   r0   r:   objectr<   r!  r/   r   r   <module>r+     sV   @ @ @ @ @ @ @ @ @ @ @ @       				 



  RZ 122 BJtR\22 
9%%BJx(( "*Y'' 

	 
	 

" 
" 
"  .Q Q Qh8 h8 h8 h8 h8 h8 h8 h8V6 6 6 6 6r   