U
    Dk\                     @   s   d dl mZ d dl mZ d dlmZ ddlmZ d dlZejj	Z	ejj
Z
eejdr^ejjZnejjZdd	gZd
ZedejZzeeZW n ek
r   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 )    )absolute_import)unicode_literals)ProcessingInstruction   )utilNtest_commentto_html_stringto_xhtml_string)ZareabaseZbasefontbrcolframeZhrZimginputZisindexlinkmetaZparamz)&(?!(?:\#[0-9]+|\#x[0-9a-f]+|[0-9a-z]+);)c                 C   s   t d| t| jf d S )Nzcannot serialize %r (type %s))	TypeErrortype__name__text r   6/usr/lib/python3/dist-packages/markdown/serializers.py_raise_serialization_error@   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_cdataF   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_attribX   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_htmlk   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
||	f  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?>r   {}z QName objects must define a tag.r   htmlz %sz %s="%s"z xmlns="%s"xhtmlz />r   )ZscriptZstylez</)tagr   Commentr$   r   _serialize_html
isinstanceQNamesplit
ValueErroritemssortedr)   r(   lower
HTML_EMPTYtail)
writeelemformatr.   r   eZnamespace_urir5   kvr   r   r   r0   |   sX    



r0   r,   c                 C   s,   | d k	st g }|j}t|| | d|S )N )AssertionErrorappendr0   join)rootr<   datar:   r   r   r   _write_html   s
    rF   c                 C   s   t t|  ddS )Nr,   r<   rF   ElementTreeZgetrootelementr   r   r   r      s    c                 C   s   t t|  ddS )Nr-   rG   rH   rJ   r   r   r   r	      s    )r,   )Z
__future__r   r   Zxml.etree.ElementTreer   r@   r   reZetreerI   r2   hasattrr   r/   __all__r8   compileIr    set	NameErrorr   r$   r(   r)   r0   rF   r   r	   r   r   r   r   <module>(   s0   
9
