U
    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
z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)areabasebasefontbrcolframehrimginput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   8/tmp/pip-unpacked-wheel-muih9_xp/markdown/serializers.py_raise_serialization_error8   s    r   c              	   C   sh   zBd| krt d| } d| kr*| dd} d| kr>| dd} | W S  ttfk
rb   t|  Y nX d S )N&&amp;<&lt;>&gt;RE_AMPsubreplacer   AttributeErrorr   r   r   r   r   _escape_cdata>   s    r)   c              	   C   s   zjd| krt d| } d| kr*| dd} d| kr>| dd} d| krR| dd} d	| krf| d	d
} | W S  ttfk
r   t|  Y nX d S )Nr   r   r    r!   r"   r#   "&quot;
z&#10;r$   r   r   r   r   _escape_attribP   s    r-   c              	   C   s|   zVd| krt d| } d| kr*| dd} d| kr>| dd} d| krR| dd} | W S  ttfk
rv   t|  Y nX d S )	Nr   r   r    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rv|r\| t| |D ]}t| || q`nrd }t|tr|jd d dkr|jdd  dd\}}nt	d| d|  |
 }|rHt|}|D ]f\}}	t|tr|j}t|	tr|	j}	nt|	}	||	kr6|dkr6| d	|	  q| d
||	 q|r^| dt|  |dkr| tkr| d nh| d |r| dkr| | n| t| |D ]}t| || q| 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   r6   r   eZnamespace_urir;   kvr   r   r   r7   t   sX    



r7   r2   c                 C   s,   | d k	st g }|j}t|| | d|S )N )AssertionErrorappendr7   join)rootr   datar@   r   r   r   _write_html   s
    rK   c                 C   s   t t|  ddS )Nr2   r   rK   r   getrootelementr   r   r   r      s    c                 C   s   t t|  ddS )Nr3   rL   rM   rO   r   r   r   r      s    )r2   )xml.etree.ElementTreer   r   r   r   re__all__r>   compileIr%   set	NameErrorr   r)   r-   r.   r7   rK   r   r   r   r   r   r   <module>(   s"   9
