
    j                     f    d dl Z d dlZd dlmZmZ d dlmZmZmZm	Z	  G d dej                        Zy)    N)AnyOptional)quoteunquoteurlparse
urlunparsec                        e Zd ZdZdef fdZ	 ddedededee	   def
 fd	Z
	 ddededee	   fd
Z	 ddededee	   defdZ	 ddededee	   defdZdedef fdZ xZS )_CustomMarkdownifya>  
    A custom version of markdownify's MarkdownConverter. Changes include:

    - Altering the default heading style to use '#', '##', etc.
    - Removing javascript hyperlinks.
    - Truncating images with large data:uri sources.
    - Ensuring URIs are properly escaped, and do not conflict with Markdown syntax
    optionsc                     |j                  dt        j                        |d<   |j                  dd      |d<   t        |   di | y )Nheading_stylekeep_data_urisF )getmarkdownifyATXsuper__init__)selfr   	__class__s     c/root/aria/tools/markitdown-venv/lib/python3.12/site-packages/markitdown/converters/_markdownify.pyr   z_CustomMarkdownify.__init__   sC    #*;;#P $+KK0@%$H !#7#    neltextconvert_as_inlinereturnc                     |s+t        j                  d|      sdt        |   ||||      z   S t        |   ||||      S )z3Same as usual, but be sure to start with a new linez^\n
)researchr   
convert_hn)r   r   r   r   r   kwargsr   s         r   r"   z_CustomMarkdownify.convert_hn   sI     !99VT*eg0B>OPPPw!!R/@AAr   c           	         t        j                  |      \  }}}|sy|j                  d      |S |j                  d      }|j                  d      }|rs	 t	        |      }	|	j
                  r$|	j
                  j                         dvr|||S t        |	j                  t        t        |	j                                          }| j                  d   r+|j                  dd	      |k(  r|s| j                  d
   sd|z  S | j                  d
   r|s|}|rd|j                  dd      z  nd}
|r|d|d||
d|S |S # t        $ r |||cY S w xY w)zGSame as usual converter, but removes Javascript links and escapes URIs. prehreftitle)httphttpsfile)path	autolinksz\__default_titlez<%s> "%s""\"[]())r   chompfind_parentr   r   schemelowerr   _replacer   r   r,   
ValueErrorr   replace)r   r   r   r   r#   prefixsuffixr'   r(   
parsed_url
title_parts              r   	convert_az_CustomMarkdownify.convert_a'   s_     +006>>% ,Kvvf~w 9%d^
$$):):)@)@)BJc)c'-tV<<!*"5"55AY;Z"5"[\ LL%UC(D0LL1 D= <<(E<AWu}}S%88r
  !'dJG	
 	
  9#)4889s   :E  7E   EEc                 *   |j                   j                  dd      xs d}|j                   j                  dd      xs  |j                   j                  dd      xs d}|j                   j                  dd      xs d}|rd|j                  dd	      z  nd}|j                  d
d      }|r'|j                  j                  | j
                  d   vr|S |j                  d      r&| j
                  d   s|j                  d      d   dz   }d|d||dS )z.Same as usual converter, but removes data URIsaltNr%   srczdata-srcr(   r0   r1   r2   r    keep_inline_images_inzdata:r   ,r   z...z![r4   r5   )attrsr   r<   parentnamer   
startswithsplit)	r   r   r   r   r#   rC   rD   r(   r@   s	            r   convert_imgz_CustomMarkdownify.convert_imgU   s     hhll5$'-2hhll5$'O288<<
D+IORWd+1r<AWu}}S%88r
kk$$		dll3J&KKJ >>'"4<<8H+I))C.#e+C #S*55r   c                 V    |j                  d      dk(  r|j                  d      rdS dS y)z.Convert checkboxes to Markdown [x]/[ ] syntax.typecheckboxcheckedz[x] z[ ] r%   )r   has_attr)r   r   r   r   r#   s        r   convert_inputz _CustomMarkdownify.convert_inputp   s-     66&>Z'[[36??r   soupc                 "    t         |   |      S )N)r   convert_soup)r   rT   r   s     r   rV   z_CustomMarkdownify.convert_soup}   s    w#D))r   )F)__name__
__module____qualname____doc__r   r   intstrr   boolr"   rA   rM   rS   rV   __classcell__)r   s   @r   r
   r
      s   $# $ -2BB B 	B
 $D>B 
B& -2	,
,
 ,
 $D>	,
d -2	66 6 $D>	6 
6> -2	  $D>	 
* * * *r   r
   )r    r   typingr   r   urllib.parser   r   r   r   MarkdownConverterr
   r   r   r   <module>rb      s(    	    = =v*66 v*r   