B
    d                 @   s   d dl mZ d dl mZmZmZ d dlZddgZdZedej	Z
yeeZW n ek
rb   Y nX 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dS )    )ProcessingInstruction)CommentElementTreeQNameNto_html_stringto_xhtml_string)ZareabaseZbasefontbrcolframehrZimginputZisindexlinkmetaparamz)&(?!(?:\#[0-9]+|\#x[0-9a-f]+|[0-9a-z]+);)c             C   s   t d| t| jd S )Nzcannot serialize {!r} (type {}))	TypeErrorformattype__name__)text r   F/var/www/html/venv/lib/python3.7/site-packages/markdown/serializers.py_raise_serialization_error8   s    r   c          	   C   sf   y@d| krt d| } d| kr*| dd} d| kr>| dd} | S  ttfk
r`   t|  Y nX d S )N&z&amp;<z&lt;>z&gt;)RE_AMPsubreplacer   AttributeErrorr   )r   r   r   r   _escape_cdata>   s    r    c          	   C   s   yhd| krt d| } d| kr*| dd} d| kr>| dd} d| krR| dd} d	| krf| d	d
} | S  ttfk
r   t|  Y nX d S )Nr   z&amp;r   z&lt;r   z&gt;"z&quot;
z&#10;)r   r   r   r   r   r   )r   r   r   r   _escape_attribP   s    r#   c          	   C   sz   yTd| krt d| } d| kr*| dd} d| kr>| dd} d| krR| dd} | S  ttfk
rt   t|  Y nX d S )	Nr   z&amp;r   z&lt;r   z&gt;r!   z&quot;)r   r   r   r   r   r   )r   r   r   r   _escape_attrib_htmlc   s    r$   c       
      C   s  |j }|j}|tkr(| dt|  n|tkrD| dt|  n|d krz|r\| t| x|D ]}t| || qbW nzd }t|tr|jd d dkr|jdd  dd\}}nt	d| d|  |
 }|rPt|}xn|D ]f\}}	t|tr|j}t|	tr|	j}	nt|	}	||	kr<|dkr<| d	|	  q| d
||	 qW |rf| dt|  |dkr| tkr| d nl| d |r| dkr| | n| t| x|D ]}t| || qW | tkr| d| d  |jr
| t|j d S )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#   lower
HTML_EMPTYtail)
writeelemr   r,   r   eZnamespace_urir1   kvr   r   r   r-   t   sX    





r-   r(   c             C   s,   | d k	st g }|j}t|| | d|S )N )AssertionErrorappendr-   join)rootr   datar6   r   r   r   _write_html   s
    rA   c             C   s   t t|  ddS )Nr(   )r   )rA   r   getroot)elementr   r   r   r      s    c             C   s   t t|  ddS )Nr)   )r   )rA   r   rB   )rC   r   r   r   r      s    )r(   )Zxml.etree.ElementTreer   r   r   r   re__all__r4   compileIr   set	NameErrorr   r    r#   r$   r-   rA   r   r   r   r   r   r   <module>(   s"   9
