
    bfӏ              	          d Z ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZmZ dd	lmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d
Z& G d dej'        j(                  Z)dde*de*dee+         de*fdZ,dS )z>html2text: Turn HTML into equivalent Markdown-structured text.    N)wrap)DictListOptionalTupleUnion   )config)OutCallback)AnchorElementListElement)dumb_css_parserelement_style	escape_mdescape_md_sectiongoogle_fixed_width_fontgoogle_has_heightgoogle_list_stylegoogle_text_emphasishnlist_numbering_startpad_tables_in_textskipwrapunifiable_n)i        c            	       H    e Zd Zddej        fdee         dededdf fdZ	deddf fd	Z
dedefd
ZdeddfdZdefdZdeddfdZdeddfdZdedeeeee         f                  ddfdZdeddfdZdeeee         f         dee         fdZdedeeef         deeef         ddfdZdedeeee         f         deddfdZd+dZd+dZd+dZ	 d,deded eeef         ddfd!Zd-ded"eddfd#Zd$edefd%Zdedefd&Z d'eeef         defd(Z!d)edefd*Z" xZ#S ).	HTML2TextN outbaseurl	bodywidthreturnc                    t                                          d           d| _        d| _        d| _        t
          j        | _        t
          j        | _	        t
          j
        | _        || _        t
          j        | _        t
          j        | _        t
          j        | _        t
          j        | _        t
          j        | _        t
          j        | _        t
          j        | _        t
          j        | _        t
          j        | _        t
          j        | _         t
          j!        | _"        t
          j#        | _$        t
          j%        | _&        d| _'        d| _(        d| _)        d| _*        t
          j+        | _,        t
          j-        | _.        d| _/        t
          j0        | _1        t
          j2        | _3        t
          j4        | _5        t
          j6        | _7        t
          j8        | _9        t
          j:        | _;        d| _<        t
          j=        | _>        t
          j?        | _@        t
          jA        | _B        || jC        | _D        n|| _D        g | _E        d| _F        d| _G        d| _H        d| _I        d| _J        g | _K        g | _L        d| _M        d| _N        t          jP        d	          | _Q        d| _R        g | _S        d| _T        d| _U        d| _V        d| _W        d| _X        d
| _Y        d| _Z        d| _[        d| _\        i | _]        g | _^        d| __        d| _`        d| _a        d| _b        d| _c        i | _d        || _e        d| _f        d| _g        d
| _h        d
| _i        dt
          jj        d<   dS )z
        Input parameters:
            out: possible custom replacement for self.outtextf (which
                 appends lines of text).
            baseurl: base URL of the document we process
        F)convert_charrefsr   *_z**NTz^[a-zA-Z+]+://r   &nbsp_place_holder;nbsp)ksuper__init__split_next_tdtd_counttable_startr
   UNICODE_SNOBunicode_snobESCAPE_SNOBescape_snobLINKS_EACH_PARAGRAPHlinks_each_paragraph
body_widthSKIP_INTERNAL_LINKSskip_internal_linksINLINE_LINKSinline_linksPROTECT_LINKSprotect_linksGOOGLE_LIST_INDENTgoogle_list_indentIGNORE_ANCHORSignore_linksIGNORE_MAILTO_LINKSignore_mailto_linksIGNORE_IMAGESignore_imagesIMAGES_AS_HTMLimages_as_htmlIMAGES_TO_ALTimages_to_altIMAGES_WITH_SIZEimages_with_sizeIGNORE_EMPHASISignore_emphasisBYPASS_TABLESbypass_tablesIGNORE_TABLESignore_tables
google_docul_item_markemphasis_markstrong_markSINGLE_LINE_BREAKsingle_line_breakUSE_AUTOMATIC_LINKSuse_automatic_linkshide_strikethrough	MARK_CODE	mark_codeWRAP_LIST_ITEMSwrap_list_items
WRAP_LINKS
wrap_linksWRAP_TABLESwrap_tables
PAD_TABLES
pad_tablesDEFAULT_IMAGE_ALTdefault_image_alttag_callback
OPEN_QUOTE
open_quoteCLOSE_QUOTEclose_quoteINCLUDE_SUP_SUBinclude_sup_subouttextfr    outtextlistquietp_poutcountstartspaceaastackmaybe_automatic_link
empty_linkrecompileabsolute_url_matcheracountlist
blockquoteprestartprecodequote	br_toggle	lastWasNLlastWasListstyle	style_def	tag_stackemphasisdrop_white_spaceinheader
abbr_title	abbr_data	abbr_listr!   stressedpreceding_stressedpreceding_datacurrent_tag	UNIFIABLE)selfr    r!   r"   	__class__s       `/home/feoh/.local/pipx/venvs/mastodon-archive/lib/python3.11/site-packages/html2text/__init__.pyr+   zHTML2Text.__init__&   s    	%000 # "/!-$*$?!##)#= "/#1"(";"1#)#= #1$3#1 & 7%5#1#1 !'!9#)#= "')%5 +!- +!'!9  +!-%5;}DHHDH ')


&(@B37!$&J/@$A$A!')		
 
46UW !)-(,)+"' #8       datac                 v    |                     dd          }t                                          |           d S )Nz</' + 'script>z	</ignore>)replacer*   feed)r   r   r   s     r   r   zHTML2Text.feed   s3    ||,k::Tr   c                     d| _         |                     |           |                     d           |                     |                                           }| j        rt          |          S |S )NTr   )rq   r   optwrapfinishrb   r   )r   r   markdowns      r   handlezHTML2Text.handle   s]    
		$		"<<..? 	%h///Or   sc                 d    | j                             |           |r|d         dk    | _        d S d S )N
)rm   appendr   )r   r   s     r   rl   zHTML2Text.outtextf   s>    """ 	+rUd]DNNN	+ 	+r   c                 4   |                                   |                                  |                     dd           d                    | j                  }| j        rt          j        j        d         }nd}|	                    d|          }g | _        |S )Nr   endforceznbsp; r(   )
closepbrojoinrm   r0   htmlentitieshtml5r   )r   outtextr)   s      r   r   zHTML2Text.finish   s    




r''$*++ 	=&w/DDD//"7>> r   cc                 X    |                      |                     |          d           d S NT)handle_datacharref)r   r   s     r   handle_charrefzHTML2Text.handle_charref   s(    a$/////r   c                 d    |                      |          }|r|                     |d           d S d S r   )	entityrefr   )r   r   refs      r   handle_entityrefzHTML2Text.handle_entityref   sC    nnQ  	(S$'''''	( 	(r   tagattrsc                 P    |                      |t          |          d           d S )NTrq   )
handle_tagdict)r   r   r   s      r   handle_starttagzHTML2Text.handle_starttag   s&    T%[[55555r   c                 6    |                      |i d           d S )NFr   )r   )r   r   s     r   handle_endtagzHTML2Text.handle_endtag   s     Ru-----r   c                    d|vrdS d}t          | j                  D ]a\  }}d|j        v rM|j        d         |d         k    r6d|j        v sd|v r'd|j        v rd|v r|j        d         |d         k    rd}nd}|r|c S bdS )z
        :type attrs: dict

        :returns: The index of certain set of attributes (of a link) in the
        self.a list. If the set of attributes is not found, returns None
        :rtype: int
        hrefNFtitleT)	enumeraters   r   )r   r   matchirs   s        r   previousIndexzHTML2Text.previousIndex   s     4df%% 	 	DAq  QWV_f%E%Eag%%E)9)917**#u,,GG,g>> $ E tr   rq   	tag_styleparent_stylec                 6   t          |          }t          |          }d|v o| j        }d}t          j        D ]}||v o||v}|r nd|v od|v}	t	          |          ot	          |           o| j         }
|r|s|	s|
r| xj        dz  c_        |r| xj        dz  c_        |	r*|                     | j	                   | xj
        dz  c_
        |r*|                     | j                   | xj
        dz  c_
        |
r.|                     d           | xj
        dz  c_
        d| _        dS dS |s|	s|
r| xj        dz  c_        d| _        |
r4| j
        r| xj
        dz  c_
        n|                     d           d| _        |r2| j
        r| xj
        dz  c_
        n|                     | j                   |	r2| j
        r| xj
        dz  c_
        n|                     | j	                   |s|	r| j        s|                     d           |r| xj        dz  c_        dS dS )	z/
        Handles various text emphases
        zline-throughFitalicr	   `Tr   N)r   rX   r
   BOLD_TEXT_STYLE_VALUESr   r}   r   rn   r   rR   r   rS   r   rr   )r   rq   r   r   tag_emphasisparent_emphasisstrikethroughboldbold_markerr   fixeds              r   handle_emphasiszHTML2Text.handle_emphasis   s    ,I66.|<< ',6R4;R !8 	 	K,.U;o3UD  \)Mho.M#I.. +L999H 	  -	   #v # #"  

a

 +t)***%%*%% +t'(((%%*%% !s%%*%% 			! !
  #v # #""
 "(  ))Q.)))FF3KKK!	 -( -))Q.)))FF4+,,, /( /))Q.)))FF4-...   s  

a



   r   c           	      X!   || _         | j        |                     | |||          du rd S |r;| j        4|dvr0|dk    s| j        r#|                     d           d | _        d| _        | j        ri }|rN| j        r| j        d         d         }t          || j	        |          }| j        
                    |||f           nC| j        r| j                                        nd i i f\  }}}| j        r| j        d         d         }t          |          r| j        r|r}d| _        | j        rn| j        d         dk    r]| j                                         d| _        |                     t          |          dz  d	z              |                     d           n_d
| _        d| _        d S |                                  |r0d| _        |                     t          |          dz  d	z              n	d| _        d S |dv rf| j        r;|r$t'          |          r|                                  n9|                                  n$| j        rn| j        rn|                                  |dk    r8|r6| j        d
k    r|                     d           n|                     d           |dk    r?|r=|                                  |                     d           |                                  |dv r#|r| xj        dz  c_        n| xj        dz  c_        |dk    r#|r| xj        dz  c_        n| xj        dz  c_        |dv rd
| _        |dk    ri|rC|                                  |                     dd           d| _        | xj        dz  c_        n$| xj        dz  c_        |                                  |dv r| j        s{|rT| j        rM| j        d         t8          j        vr4| j        d         t8          j        vrd	| j        z   }| xj        d	z  c_        n| j        }|                     |           |rd| _         |dv r| j        s}|rV| j        rOtC          | j"                  d
k    r7| j        d         | j"        d
         k    rd	| j"        z   }| xj        d	z  c_        n| j"        }|                     |           |rd| _         |dv rM|r+| j        r$| j        d         dk    rd}	| xj        d	z  c_        nd}	|                     |	           |rd| _         | j        r| j        s| #                    |||           |dv r)| j$        s"|                     d           | j%         | _%        |d k    rT|r d | _&        d!| _'        d"|v r|d"         | _&        n2| j&        $| j'        J | j&        | j(        | j'        <   d | _&        d | _'        |d#k    rI| j)        s|                     | j*                   n|                     | j+                   | j)         | _)        dWd$tX          d%tZ          d"tZ          d&d fd'}
|d(k    r| j.        s|rd)|v r|d)         | j/        r|d)         0                    d          sj| j1        r|d)         0                    d*          sH| j        
                    |           |d)         | _        d| _        | j2        rd+|d)         z   d,z   |d)<   nj| j        
                    d            nN| j        rF| j                                        }| j        r| j        s	d | _        n|r|d)         J | j        r#|                     d           d| _        d | _        | j3        rAd
| _        |4                    d"          pd!}tk          |          } |
| |d)         |           n| 6                    |          }|| j7        |         }nE| xj8        dz  c_8        ts          || j8        | j:                  }| j7        
                    |           |                     d-t[          |j;                  z   d.z              |dk    r|r| j        sd/|v r|d/         | j<        s|d/         |d)<   |4                    d0          p| j=        }| j>        s| j?        rd1|v sd2|v r|                     d3|d/         z   d4z              d1|v r)|d1         !|                     d5|d1         z   d4z              d2|v r)|d2         !|                     d6|d2         z   d4z              |r|                     d7|z   d4z              |                     d8           d S | j        | j        }| j<        r^tk          |          |k    rK| j@        A                    |          r1|                     d+tk          |          z   d,z              d| _        d S |                     d           d | _        d| _        | j<        r$|                     tk          |                     n|                     d9tk          |          z   d.z              | j3        rX|4                    d)          pd!}|                     d:tk          t          jC        | jD        |                    z   d;z              n| 6                    |          }|| j7        |         }nE| xj8        dz  c_8        ts          || j8        | j:                  }| j7        
                    |           |                     dt[          |j;                  z   d.z              |d<k    r|r|                                  |d=k    r|s| E                                 |d>k    r|r|                     d?           |d>k    r|s| E                                 |d@v r| jF        s| jG        s|                                  |rQ| j        rt          |          }n|}t          |          }| jF        
                    t          ||                     nC| jF        r<| jF                                         | j        s| jF        s|                     dA           d| _G        nd| _G        |dBk    r| E                                 |r| jF        r| jF        d         }nt          dCd
          }| j        r,|                     dD| K                    |          z             n;d }| jF        D ]1}|                     |dEk    r|jL        dCk    rdFndD           |jL        }2|jL        dCk    r|                     | jM        d	z              nE|jL        dEk    r:|xjN        dz  c_N        |                     t[          |jN                  dGz              d| _        |dHv rh| jO        r"|dIk    r|rnW|                                  nAn?| jP        r|r|                                  |dJv rV|r*|                     dKQ                    |                     n|                     dLQ                    |                     n|r*|                     dMQ                    |                     n|                     dNQ                    |                     nr|dOk    r|rId| _R        | jS        r:|                     d+t          jU        z   d,z              |                     d           nU| jS        rN|                                  |                     dPt          jU        z   d,z              |                     d           |dJv r%|r#| j        r|                     dQ           d| _        |dIk    r	|rd
| _V        |dIk    r|sd| _        |                                  |dIk    rU|sS| jR        rL|                     dRW                    dSg| jV        z                       |                                  d| _R        |dJv r|r| xjV        dz  c_V        |dTk    rH|rd| _X        d| _$        n#d| _$        | jY        r| Z                    dU           |                                  |dVv r]| j[        rX|r*|                     dMQ                    |                     d S |                     dNQ                    |                     d S d S d S )XNT)pdivr   dldtimg[Fr   r   #r   r   )r   r   brz  
>   
hrz* * *)headr   scriptr	   r   )bodyr|   > r   )emr   u)strongb)delstriker   ~z ~~z~~)kbdr   ttr   abbrr   r   qr   linkr#   c                     t          j        | j        |          }|                                rd                    |          nd}|                     d                    t          |          |                     d S )Nz "{}"r   z]({url}{title}))urlr   )urlparseurljoinr!   stripformatr   r   )r   r   r   r   s       r   link_urlz&HTML2Text.handle_tag.<locals>.link_url  sk    "4<66C-2[[]]BGNN5)))EFF$++	#e+LLMMMMMr   rs   r   zmailto:<>z][]srcaltwidthheightz
<img src='z' zwidth='zheight='zalt='z/>z![()r   r   dd    )olulr   lir    r  z   z. )tabletrtdthr
  )r  r  z<{}>

z
</{}>z<{}>z</{}>r	  z</z| |z---r}   z
[/code])supsub)r   )\r   re   ru   rC   r   rv   rP   r   r   r   r   popr   rt   r   rm   rr   ro   r   r   soft_brr,   r|   rn   r   rq   rK   r   string
whitespacepunctuationrR   r   lenrS   r   r}   r   r   r   r   r   rg   ri   r   strr?   r7   
startswithrA   r;   r9   getr   r   rs   rz   r   rp   countrG   rd   rE   rI   ry   r   r   r   r!   r   r{   r   r   r   r   google_nest_countnamerQ   numrO   rM   r   r.   rb   r
   TABLE_MARKER_FOR_PADr-   r   r~   rZ   r    rk   )r   r   r   rq   r   r   dummyr   r   r   r   rs   r   r   a_propsr   r   
list_stylenumbering_startr  parent_listr{   s                         r   r   zHTML2Text.handle_tag,  s    (  sE599TAA
 	$)5<<<!3FF3KKK(,D%#DO? 	9
 ,.L 
9> 9#'>"#5a#8L)%NN	%%sE9&=>>>> -1NNDN&&(((r2 (ui > 9#'>"#5a#8Lc77 	{  $(DM' $D,<R,@C,G,G(,,...%*
r#ww}s2333s DH$)DMF $(DMFF2c77S=3.////$)DMF, 
 #.y99 #FFHHHHLLNNNN # $;;5;""x    v$;;5;FFHHHFF7OOOFFHHH---  

a




a

'>>  

a




a

(??DJ, t4(((!
1$1$"""4+?" 	.'	. '+63DDD'+63EEE!33##s*###-FF8 % $/!!$*>! *'* ())A--'+t/?/BBBt//##s*###)FF6NNN % $((( , 1DR1HC1O1O##s*###FF6NNN % $? 	E= E$$UI|DDD''''FF3KKK IDI&== 
&"&!#e##&+GnDO?.>55559_DN4>2&*DO!%#::: )t''''t'(((!ZDJ	N 	N9 	NC 	N 	NT 	N 	N 	N 	N
 #::d/: (DeOOf1!5 2:?-:R:RSV:W:W 2 0 2 6;6]5M5Mi5X5X 2 K&&u---05fD-&*DO) B(+eFm(;c(AfK&&t,,,,; D))A0 D D4811 D y444? = FF3KKK.3DO8<D5, D'(DH$%EE'NN$8bE$-e$4$4E$HT1V9e<<<< $ 2 21 5 5A }*.&) $q 0*74;*V*V $g 6 6 6 FF4#gm*<*<#<s#BCCC%<<E<$*<<~~%,":) 1$)%LE&Mii&&@$*@ & )/6%/?/?8uCTCTFF<%,6=>>>%''E'N,Fy5>9D@AAA5((U8_-HzE(O;dBCCC 5w}t3444FF4LLLF ,84D*0%cNNd22 5;;DAA 3 sYs^^3c9:::*/s481*/ % ?FF9S>>****FF4)C..036777( ?$yy006B)H,<T\4,P,P"Q"QQTWW    !..u55=&*fQiGG KK1,KK&3E4;&V&VG FMM'222sS%7%77#=>>>$;;5;FFHHH$;;u;HHJJJ$;;5;FF6NNN$;;u;HHJJJ,9 T%5  %? %!29!=!=JJ!$J"6u"="=	  Z!I!IJJJJ9 %IMMOOO? %49 %t#D$D$;;HHJJJ "9 .2BB$T1--B? 0FF4$"8"8"C"CCDDDD #'K $	 0 0%0D%8%8TY$=N=NEETX   '+i7d??FF4,s23333W__FFaKFFFF3rv;;-...!
---! 4'$;; '# +' #LLNNN,&& 6z00556666y//445555 4v}}S112222w~~c223333 '>> 
++/(? + FF3)D#Ds#JKKK FF6NNN? + LLNNN FF4&*E#E#KLLL FF6NNN,&&5&) %t)-D&$;;5;$%DM$;;u;).D&LLNNN$;;u;1A;FF388UGdm$;<<===LLNNN',D$,&&5&MMQ&MM%<< * $ > *HH[)))FFHHH.  T%9  ,v}}S))*****w~~c**+++++	 !   r   c                 .    | j         dk    r	d| _         dS dS )zPretty print has a line breakr   r	   N)ro   r   s    r   r   zHTML2Text.pbr  s    8q==DHHH =r   c                 &    | j         rdnd| _        dS )z Set pretty print to 1 or 2 linesr	   r   N)rU   ro   r$  s    r   r   zHTML2Text.p  s    .511Ar   c                 <    |                                   d| _        dS )zSoft breaksr  N)r   r   r$  s    r   r  zHTML2Text.soft_br  s    


r   Fpuredatar   c           	         | j         | xj         |z  c_         | j        s| j        r8|                                }| j        r| j        s	| j        s|}|dk    rd| _        |r<| j        s5t          j        dd|          }|r|d         dk    rd| _	        |dd         }|s|sdS | j
        rR|                    d          s|                    d	          sd|z   }| j        r|                     d
           d| _        d| j        z  }|r|r|d         dk    s| j        r|dz  }| j        r?| j        s|dz  }|dt#          | j                  z  z  }|                    dd|z             }| j
        r#d| _
        | j        r|                    d          }| j        rd| _	        d| _        d| _        |dk    r#d| _        |                     d           d| _	        | j        r6|                     | j        dz   |z   | j        z             d| _	        d| _        | j	        r#| j        s|                     d           d| _	        | j        r1| j        dk    r| j        s|dk    r|dk    r|                     d           g }| j        D ]}| j        |j        k    r|                     dt3          |j                  z   dz   t7          j        | j        |j        d                   z              d|j        v r3|j        d         &|                     d|j        d         z   dz              |                     d           |                    |           | j        |k    r|                     d           || _        | j         rF|dk    r@| j         !                                D ]&\  }}	|                     d|z   dz   |	z   dz              'd| _        |                     |           | xj        dz  c_        dS dS )z6
        Deal with indentation and whitespace
        Nr   r   z\s+r   Tr	   r   z
z
[code]r   r  Fr   r   z   [z]: r   r   z (r  z  *[)"r   rn   rP   lstripr   r}   r   rw   r  rr   r~   r  rZ   r    ro   r|   r{   r  r   rq   r   r   rs   r4   rp   r  r  r   r   r!   r   r   r   items)
r   r   r'  r   lstripped_databqnewar   r   
definitions
             r   r   zHTML2Text.o  s]    >%NNd"NNz e	 . "&( *$( *di *)D!R'',-D) $ $ vfdD11 $DGsNN!%DJ8D  } !t,, 'T__V5L5L '$;D> !HHZ((( DHt&B d tAw#~~4?~c	x 5y !&LBfs49~~--||D$)44} - %9 -;;t,,Dz #"
"
~~"
x $$.4/"4@AAA"
!#z #~ "HHSMMM"
v Q4#<%E>>HHTNNN F * *D}t}44"!$*oo.#$ '.t|TZ=OPPQ   #dj00TZ5H5T HHTDJw,?%?#%EFFFD)))) 6T>>HHTNNN~ H%5..(,(<(<(>(> H H$D*HHVd]U2Z?$FGGGGDHHHTNNNMMQMMMMKe	 e	r   entity_charc                    |sd S | j         r#|                                }d| _         d| _        nK| j        rDt          j        d|d                   r"t          | j                  s| j        dvrd|z   }d| _        | j        r'| j        	                    t          |                     | j        u| j        }||k    rE| j                            |          r+| j        r$|                     d|z   dz              d| _        d S |                     d	           d | _        d| _        | j        s| j        s|st%          || j        
          }|| _        |                     |d           d S )NFTz[^][(){}\s.!?]r   )rs   r   r}   r   r   r   r   )snob)r'  )r   r   r   rw   r   r   r   r   r   updater   ru   ry   rW   r   rv   r   r}   r   r2   r   )r   r   r/  r   s       r   r   zHTML2Text.handle_dataY  s    	 F= 	,::<<D!DM&*D##$ 	,*DG44"4+,," $,@@@ Tz&+D#: 	9N!!/$"7"7888$0,D-33D99 ,  sTzC'((("'s,0)"'y 	B 	B+ 	B$T0@AAAD"td#####r   r  c                     |d         dv rt          |dd          d          }nt          |          }| j        s|t          v rt          |         S 	 t          |          S # t          $ r Y dS w xY w)Nr   )xXr	      r   )intr0   r   chr
ValueError)r   r  r   s      r   r   zHTML2Text.charref  s    7j  DHb!!AAD		A  	Q+%5%5q>!1vv   rrs   A   
A.-A.c                     | j         s |t          j        v rt          j        |         S 	 t          j        j        |dz            }n# t          $ r d|z   dz   cY S w xY w|dk    rt          j        |         n|S )N;&r)   )r0   r
   r   r   r   r   KeyError)r   r   chs      r   r   zHTML2Text.entityref  s      	'Q&*:%:%:#A&&	!$QW-BB 	! 	! 	!7S=   	!&'6kkv""r9s   A AAr   c                 \    d}d|v r%t          |d         dd                   | j        z  }|S )zq
        Calculate the nesting count of google doc lists

        :type style: dict

        :rtype: int
        r   zmargin-leftN)r7  r=   )r   r   
nest_counts      r   r  zHTML2Text.google_nest_count  s=     
E!!U=1#2#6774;RRJr   textc                 |   | j         s|S d}d}| j        sd| _        |                    d          D ]	}t	          |          dk    rt          || j        | j        | j                  sd}|                    d| j	        z             rd}n|                    d          rd}t          || j         d|          }|d                    |          z  }|                    d          r|d	z  }d
}|r|dz  }d
}|dz  }d}t          j                            |          s
||dz   z  }d
}|dk     r
|dz  }|d
z  }|S )zi
        Wrap all paragraphs in the provided text.

        :type text: str

        :rtype: str
        r   r   Fr   r  r  r   )break_long_wordssubsequent_indentr   r	   z

r   )r5   r^   r9   splitr  r   r\   r`   r  rQ   r   r   endswithr
   RE_SPACEr   )r   rB  resultnewlinesparaindentwrappeds          r   r   zHTML2Text.optwrap  s     	K  	& %DJJt$$ )	" )	"D4yy1}}$/4+?AQ  #%  Ftd.?'?@@ & "(.. & "&").*0	  G dii000F}}T** %&(#$ %$#$&(#$ "?0066 %$+-#$a<<dNFMHr   )r#   N)FF)F)$__name__
__module____qualname__r
   
BODY_WIDTHr   r   r  r7  r+   r   r   rl   r   r   r   r   r   r   r   r   r   boolr   r   r   r   r  r   r   r   r   r   r  r   __classcell__)r   s   @r   r   r   %   s        &**	c9 c9k"c9 c9 	c9
 
c9 c9 c9 c9 c9 c9J       3 3    +# +$ + + + +
    (0 0 0 0 0 0
(# 
($ 
( 
( 
( 
(63 6tE#x}:L4M/N 6SW 6 6 6 6. . . . . .4Xc](:#;     8G G &*38nG DHcNG 	G  G  G  G Rl,l,#C#$67l,@Dl,	l, l, l, l,^   
6 6 6 6    LQn nn#'n8=dCi8Hn	n n n n`)$ )$ )$$ )$4 )$ )$ )$ )$VC C    :3 :3 : : : :tCH~ #    <C <C < < < < < < < <r   r   r   r   r!   r"   r#   c                 j    |t           j        }t          ||          }|                    |           S )N)r!   r"   )r
   rQ  r   r   )r   r!   r"   hs       r   	html2textrV    s2    %	'Y777A88D>>r   )r   N)-__doc__html.entitiesr   html.parserrw   r  urllib.parseparser   textwrapr   typingr   r   r   r   r   r   r
   _typingr   elementsr   r   utilsr   r   r   r   r   r   r   r   r   r   r   r   r   __version__parser
HTMLParserr   r  r7  rV   r   r   <module>re     s   D D         				              5 5 5 5 5 5 5 5 5 5 5 5 5 5                   0 0 0 0 0 0 0 0                               @ @ @ @ @& @ @ @F C # x} PS      r   