
    %j                     d    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dS )    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                     |                     dt          j                  |d<   |                     dd          |d<    t                      j        di | d S )Nheading_stylekeep_data_urisF )getmarkdownifyATXsuper__init__)selfr   	__class__s     j/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/markitdown/converters/_markdownify.pyr   z_CustomMarkdownify.__init__   sZ    #*;;#P#P $+KK0@%$H$H !##7#####    F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   sf     ! 	Q9VT** Qegg00B>OPPPPww!!!R/@AAAr   c           	         t          j        |          \  }}}|sdS |                    d          |S |                    d          }|                    d          }|r	 t	          |          }	|	j        r#|	j                                        dvr|||S t          |	                    t          t          |	j                                                }n# t          $ r |||cY S w xY w| 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 )zGSame as usual converter, but removes Javascript links and escapes URIs. preN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66 	2>>%  ,Kvvf~~w  	99%d^^
$ =):)@)@)B)BJc)c)c'-vttVV<<!*"5"55AYAY;Z;Z"5"["[\\ 9 9 9#)64488889
 L%	!UC((D00 1L1 1
 D= <( 	 	E<AIWu}}S%8888r
 ddJJJGG	
s   !8C AC C21C2c                    |j                             dd          pd}|j                             dd          p|j                             dd          pd}|j                             dd          pd}|rd|                    dd	          z  nd}|                    d
d          }|r|j        j        | j        d         vr|S |                    d          r+| j        d         s|                    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    hll5$''-2hll5$''O28<<
D+I+IORWd++1r<AIWu}}S%8888r
kk$$$		dl3J&KKKJ >>'"" 	,4<8H+I 	,))C..#e+C #SS***55r   c                 j    |                     d          dk    r|                    d          rdndS dS )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   s9     66&>>Z''[[33?66?rr   soupc                 F    t                                          |          S )N)r   convert_soup)r   rT   r   s     r   rV   z_CustomMarkdownify.convert_soup}   s    ww##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 	B
 $D>B 
B B B B B B& -2	,
 ,
,
 ,
 $D>	,
 ,
 ,
 ,
d -2	6 66 6 $D>	6 
6 6 6 6> -2	   $D>	 
   * * * * * * * * * * * *r   r
   )r    r   typingr   r   urllib.parser   r   r   r   MarkdownConverterr
   r   r   r   <module>rb      s    				                     = = = = = = = = = = = =v* v* v* v* v*6 v* v* v* v* v*r   