o
    p.au                     @   s4   d Z ddlZdddZdddZG d	d
 d
eZdS )zApplies a fix to CR LF TAB handling in xml.dom.

Fixes this: http://code.google.com/p/chromium/issues/detail?id=76293
Working around this: http://bugs.python.org/issue5752
TODO(bradnelson): Consider dropping this when we drop XP support.
    NFc                 C   sV   | dd dd}| dd dd}|r$| d	d
 dd dd}| | dS )zWrites datachars to writer.&z&amp;<z&lt;"z&quot;>z&gt;z&#xD;
z&#xA;	z&#x9;N)replacewrite)writerdata	is_attrib r   -/usr/lib/python3/dist-packages/gyp/xml_fix.py_Replacement_write_data   s   r    c           	      C   s   | |d | j  |  }t| }|D ]}| d|  t||| jdd | d q| jrV| d|  | jD ]}|||| || q<| d|| j|f  d S | d|  d S )	Nr   z %s="T)r   r   z>%sz	%s</%s>%sz/>%s)	r
   tagName_get_attributessortedkeysr   value
childNodeswritexml)	selfr   indent	addindentnewlattrsa_namesa_namenoder   r   r   _Replacement_writexml   s   
r!   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	XmlFixz7Object to manage temporary patching of xml.dom.minidom.c                 C   s4   t jjj| _t jjjj| _tt jj_tt jjj_d S N)	xmldomminidom_write_data
write_dataElementr   r   r!   r   r   r   r   __init__5   s   
zXmlFix.__init__c                 C   s.   | j r| j tjj_| jtjjj_d | _ d S d S r#   )r(   r$   r%   r&   r'   r   r)   r*   r   r   r   Cleanup=   s
   
zXmlFix.Cleanupc                 C   s   |    d S r#   )r,   r*   r   r   r   __del__C   s   zXmlFix.__del__N)__name__
__module____qualname____doc__r+   r,   r-   r   r   r   r   r"   2   s
    r"   )F)r   r   r   )r1   xml.dom.minidomr$   r   r!   objectr"   r   r   r   r   <module>   s
   

