JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/html2text/__pycache__/utils.cpython-39.opt-1.pyc

a

\n ^d�@s�ddlZddlmZmZmZddlmZdd�ej�	�D�Z
eed�dd	�Z
eeeefd
�dd�Zeeeeeeffd
�dd�Zeeeefeeeeeffeeefeeefd�dd�Zeeefed
�dd�Zeeefed
�dd�Zeeefeed
�dd�Zeeefed
�dd�Zeeeefed�dd�Zeeeed�dd �Zeed!�d"d#�Zd.eeed%�d&d'�Zeeeeed(�d)d*�Zd/eeed+�d,d-�ZdS)0�N)�Dict�List�Optional�)�configcCs&i|]\}}|dkrtjj||�qS)Znbsp)�htmlZentitiesZname2codepoint)�.0�k�v�r�3/usr/lib/python3.9/site-packages/html2text/utils.py�
<dictcomp>s�r
)�tag�returncCsD|ddkr@t|�dkr@|d}d|kr4dkr@nnt|�SdS)Nr�h�r�0�9)�len�int)r�nrrr�hn
s
r)�stylercCsdd�dd�|�d�D�D�S)z,
    :returns: A hash of css attributes
    cSs&i|]\}}|����|�����qSr)�strip�lower)r�x�yrrrr
s�z&dumb_property_dict.<locals>.<dictcomp>cSs g|]}d|vr|�dd��qS)�:r��split)r�zrrr�
<listcomp>�z&dumb_property_dict.<locals>.<listcomp>�;r�rrrr�dumb_property_dicts�r%)�datarcCs�|d7}|�d�}|dkrJ|d|�||�d|�dd�}|�d�}qdd�|�d	�D�}zd
d�|D�}Wnty�i}Yn0|S)z�
    :type data: str

    :returns: A hash of css selectors, each of which contains a hash of
    css attributes.
    :rtype: dict
    r#z@import���rrNcSs"g|]}d|��vr|�d��qS)�{)rr�rrrrrr!0r"z#dumb_css_parser.<locals>.<listcomp>�}cSsi|]\}}|��t|��qSr)rr%)r�a�brrrr
2r"z#dumb_css_parser.<locals>.<dictcomp>)�findr�
ValueError)r&ZimportIndex�pairs�elementsrrr�dumb_css_parsers	
$
r1)�attrs�	style_def�parent_stylercCs^|��}d|vr<|d��D]}|�d|i�}|�|�qd|vrZt|d�}|�|�|S)z�
    :type attrs: dict
    :type style_def: dict
    :type style_def: dict

    :returns: A hash of the 'final' style attributes of the element
    :rtype: dict
    �class�.r)�copyr�get�updater%)r2r3r4rZ	css_classZ	css_styleZimmediate_stylerrr�
element_style9s

r:cCs d|vr|d}|dvrdSdS)zh
    Finds out whether this is an ordered or unordered list

    :type style: dict

    :rtype: str
    zlist-style-type)ZdiscZcircleZsquareZnoneZulZolr)rZ
list_stylerrr�google_list_styleTs
r;cCsd|vS)z�
    Check if the style of the element has the 'height' attribute
    explicitly defined

    :type style: dict

    :rtype: bool
    Zheightrr$rrr�google_has_heightds	r<cCsJg}d|vr|�|d�d|vr0|�|d�d|vrF|�|d�|S)zk
    :type style: dict

    :returns: A list of all emphasis modifiers of the element
    :rtype: list
    ztext-decorationz
font-stylezfont-weight)�append)rZemphasisrrr�google_text_emphasispsr>cCs$d}d|vr|d}d|kp"d|kS)zu
    Check if the css of the current element defines a fixed width font

    :type style: dict

    :rtype: bool
    �zfont-familyzcourier newZconsolasr)rZfont_familyrrr�google_fixed_width_font�sr@)r2rcCs2d|vr.zt|d�dWSty,Yn0dS)zh
    Extract numbering from list element attributes

    :type attrs: dict

    :rtype: int or None
    �startrr)rr.)r2rrr�list_numbering_start�srB)�para�
wrap_links�wrap_list_itemsrcCs�|stj�|�rdS|dd�dks0|ddkr4dS|��}|dd�dkrht|�dkrh|ddkrhd	S|dd
�dvr�|dd�dks�|Sttj�|�p�tj�|��S)
NTr�z    �	rz--�-Fr)rH�*z**)	rZRE_LINK�search�lstripr�boolZRE_ORDERED_LIST_MATCHER�matchZRE_UNORDERED_LIST_MATCHER)rCrDrE�strippedrrr�skipwrap�s( 
�rO)�textrcCstj�d|�S)zU
    Escapes markdown-sensitive characters within other markdown
    constructs.
    �\\\1)rZRE_MD_CHARS_MATCHER�sub)rPrrr�	escape_md�srSF)rP�snobrcCsNtj�d|�}|r tj�d|�}tj�d|�}tj�d|�}tj�d|�}|S)zO
    Escapes markdown-sensitive characters across whole document sections.
    rQz\1\\\2)rZRE_MD_BACKSLASH_MATCHERrRZRE_MD_CHARS_MATCHER_ALLZRE_MD_DOT_MATCHERZRE_MD_PLUS_MATCHERZRE_MD_DASH_MATCHER)rPrTrrr�escape_md_section�srU)�lines�right_marginrc	s4�fdd�|d�d�D�}t|�}|D]�}dd�|�d�D�}t|�}||krd|dg||7}n0||kr�|�fdd�|||d�D�7}|}�fd	d�t||�D�}q(g}|D]x}d
d�|�d�D�}t|���td�k�rd��fd
d�t||�D�}nd��fdd�t||�D�}|�d�|��q�|S)zR
    Given the lines of a table
    padds the cells and returns the new lines
    csg|]}t|�����qSr)r�rstripr)�rWrrr!�r"z"reformat_table.<locals>.<listcomp>r�|cSsg|]}|���qSr�rXr)rrrr!�r"r?csg|]}t|���qSr)rr)rYrrr!�r"Ncs"g|]\}}tt|��|��qSr)�maxr)rrZold_lenrYrrr!�scSsg|]}|���qSrr[r)rrrr!�r"z-|rHcs,g|]$\}}|���|t|����qSr�rXr�rr�M��fillerrrr!�s�� cs,g|]$\}}|���|t|����qSrr]r^r`rrr!�s�)rr�zip�setrr=�join)	rVrWZ	max_widthZmax_cols�lineZcolsZnum_cols�	new_linesZnew_colsr)rarWr�reformat_table�s6$
�
�
�rh)rPrWrcCs||�d�}g}d}g}|D]V}tj|vrV|}|st||�}|�|�g}|�d�q|rf|�|�q|�|�qd�|�S)z0
    Provide padding for tables in the text
    �
Fr?)rrZTABLE_MARKER_FOR_PADrh�extendr=re)rPrWrVZtable_bufferZ
table_startedrgrf�tablerrr�pad_tables_in_texts"




rl)F)r)Z
html.entitiesr�typingrrrr?rZ	UNIFIABLE�itemsZunifiable_n�strrrr%r1r:r;rLr<r>r@rBrOrSrUrhrlrrrr�<module>s.�
 

�+
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg