
    /Vh                        d 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
Z
ddlmZmZmZ ddgZ e
j                   d	e
j"                        Zdd
ZddZddZddZddZdddZddZddZy)a  
Python-Markdown provides two serializers which render [`ElementTree.Element`][xml.etree.ElementTree.Element]
objects to a string of HTML. Both functions wrap the same underlying code with only a few minor
differences as outlined below:

1. Empty (self-closing) tags are rendered as `<tag>` for HTML and as `<tag />` for XHTML.
2. Boolean attributes are rendered as `attrname` for HTML and as `attrname="attrname"` for XHTML.
    )annotations)ProcessingInstruction)CommentElementTreeElementQName
HTML_EMPTYN)CallableLiteralNoReturnto_html_stringto_xhtml_stringz)&(?!(?:\#[0-9]+|\#x[0-9a-f]+|[0-9a-z]+);)c                ^    t        dj                  | t        |       j                              )Nzcannot serialize {!r} (type {}))	TypeErrorformattype__name__texts    D/home/dcms/DCMS/lib/python3.12/site-packages/markdown/serializers.py_raise_serialization_errorr   :   s)    
)00tDz7J7JK
 
    c                    	 d| v rt         j                  d|       } d| v r| j                  dd      } d| v r| j                  dd      } | S # t        t        f$ r t        |        Y y w xY w)N&&amp;<&lt;>&gt;RE_AMPsubreplacer   AttributeErrorr   r   s    r   _escape_cdatar%   @   so    ) $;::gt,D$;<<V,D$;<<V,D~& )"4()s   AA
 
A'&A'c                ,   	 d| v rt         j                  d|       } d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } d	| v r| j                  d	d
      } | S # t        t        f$ r t        |        Y y w xY w)Nr   r   r   r   r   r   "&quot;
z&#10;r    r   s    r   _escape_attribr*   R   s    )$;::gt,D$;<<V,D$;<<V,D4<<<h/D4<<<g.D~& )"4()s   A3A6 6BBc                    	 d| v rt         j                  d|       } d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } | S # t        t        f$ r t        |        Y y w xY w)	Nr   r   r   r   r   r   r'   r(   r    r   s    r   _escape_attrib_htmlr,   e   s    )$;::gt,D$;<<V,D$;<<V,D4<<<h/D~& )"4()s   AA   A=<A=c                   |j                   }|j                  }|t        u r | dt        |      z         n|t        u r | dt        |      z         n|)|r | t        |             |D ]  }t        | ||        nd }t        |t              r@|j                  d d dk(  r#|j                  dd  j                  dd      \  }}nt        d       | d|z          |j                         }|rt        |      }|D ]w  \  }}	t        |t              r|j                  }t        |	t              r|	j                  }	nt        |	      }	||	k(  r|dk(  r | d	|	z         ` | d
j                  ||	             y |r | dt        |      z         |dk(  r|j                         t         v r	 | d       nn | d       |r,|j                         dv r	 | |       n | t        |             |D ]  }t        | ||        |j                         t         vr | d|z   dz          |j"                  r | t        |j"                               y y )Nz	<!--%s-->z<?%s?>   {}z QName objects must define a tag.r   htmlz %sz {}="{}"z xmlns="%s"xhtmlz />r   )scriptstylez</)tagr   r   r%   r   _serialize_html
isinstancer   split
ValueErroritemssortedr,   r   r*   lowerr	   tail)
writeelemr   r5   r   enamespace_urir:   kvs
             r   r6   r6   v   s   
((C99D
g~kM$//0	%	%ht,,-	-%& 	.AE1f-	. c5!xx|s"%(XXab\%7%7Q%?"s !CDDcCi

5ME 31a'Aa'A+A.A6f.%!)$*++Aq123 ->-#@ABW
!:%L#J99;"55$K--. 2q&12yy{*,dSj3&'yymDII&' r   c                b    | J g }|j                   }t        || |       dj                  |      S )N )appendr6   join)rootr   datar>   s       r   _write_htmlrJ      s6    DKKEE4(774=r   c                J    t        t        |       j                         d      S )z: Serialize element and its children to a string of HTML5. r1   r   rJ   r   getrootelements    r   r   r      s    {7+335fEEr   c                J    t        t        |       j                         d      S )z: Serialize element and its children to a string of XHTML. r2   rL   rM   rO   s    r   r   r      s    {7+335gFFr   )r   strreturnr   )rS   rR   )r   rR   rS   rR   )r>   zCallable[[str], None]r?   r   r   Literal['html', 'xhtml']rS   None)r1   )rH   r   r   rT   rS   rR   )rP   r   rS   rR   )__doc__
__future__r   xml.etree.ElementTreer   r   r   r   r   r	   retypingr
   r   r   __all__compileIr!   r   r%   r*   r,   r6   rJ   r   r    r   r   <module>r_      so   J # 7 R R 	 . ..
/	@"$$	G
)$)&)"6(rF
Gr   