3 �Pf�"�@s|ddlmZmZmZddlmZddlmZmZddl Z ddl m Z ddl m Z dd l m Z dd lmZd d �Zee�ZdS) �)�absolute_import�division�unicode_literals)�MutableMapping)�minidom�NodeN�)�base�)� constants)� namespaces)�moduleFactoryFactorycsV��Gdd�dt��G��fdd�dtj��G����fdd�dtj�}dd��t�S) Nc@sLeZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dS)zgetDomBuilder..AttrListcSs ||_dS)N)�element)�selfr�r�/usr/lib/python3.6/dom.py�__init__sz(getDomBuilder..AttrList.__init__cSst|jjj��S)N)�iterr� attributes�keys)rrrr�__iter__sz(getDomBuilder..AttrList.__iter__cSs4t|t�rt�n |jjj|�}||_||jj|<dS)N)� isinstance�tuple�NotImplementedErrorr� ownerDocumentZcreateAttribute�valuer)r�namer�attrrrr� __setitem__s  z+getDomBuilder..AttrList.__setitem__cSs t|jj�S)N)�lenrr)rrrr�__len__ sz'getDomBuilder..AttrList.__len__cSst|jjj��S)N)�listrr�items)rrrrr"#sz%getDomBuilder..AttrList.itemscSst|jjj��S)N)r!rr�values)rrrrr#&sz&getDomBuilder..AttrList.valuescSs"t|t�rt�n|jj|jSdS)N)rrrrrr)rrrrr� __getitem__)s z+getDomBuilder..AttrList.__getitem__cSst|t�rt�n |jj|=dS)N)rrrrr)rrrrr� __delitem__/s z+getDomBuilder..AttrList.__delitem__N) �__name__� __module__� __qualname__rrrr r"r#r$r%rrrr�AttrListsr)cs�eZdZdd�Zedd��Zdd�Zddd �Zd d �Zd d �Z dd�Z �fdd�Z dd�Z ee e �Z �fdd�Zdd�Zdd�Zee�ZdS)z"getDomBuilder..NodeBuildercSstjj||j�||_dS)N)r rr�nodeNamer)rrrrrr6sz+getDomBuilder..NodeBuilder.__init__cSst|jd�r|jjpdS)N� namespaceURI)�hasattrrr+)rrrr�:s z+getDomBuilder..NodeBuilder.cSs||_|jj|j�dS)N)�parentr� appendChild)r�noderrrr/=sz.getDomBuilder..NodeBuilder.appendChildNcSs4|jjj|�}|r$|jj||j�n |jj|�dS)N)rr�createTextNode� insertBeforer/)r�datar2�textrrr� insertTextAsz-getDomBuilder..NodeBuilder.insertTextcSs|jj|j|j�||_dS)N)rr2r.)rr0ZrefNoderrrr2Hsz/getDomBuilder..NodeBuilder.insertBeforecSs&|jj|jkr|jj|j�d|_dS)N)rZ parentNode� removeChildr.)rr0rrrr6Lsz.getDomBuilder..NodeBuilder.removeChildcSs:x.|jj�r.|jj}|jj|�|jj|�qWg|_dS)N)r� hasChildNodesZ firstChildr6r/� childNodes)rZ newParent�childrrr�reparentChildrenQs   z3getDomBuilder..NodeBuilder.reparentChildrencs �|j�S)N)r)r)r)rr� getAttributesXsz0getDomBuilder..NodeBuilder.getAttributescSsz|rvxpt|j��D]`\}}t|t�rd|ddk rF|dd|d}n|d}|jj|d||�q|jj||�qWdS)Nr�:rr )r!r"rrrZsetAttributeNSZ setAttribute)rrrrZ qualifiedNamerrr� setAttributes[s  z0getDomBuilder..NodeBuilder.setAttributescs�|jjd��S)NF)r� cloneNode)r)� NodeBuilderrrr>jsz,getDomBuilder..NodeBuilder.cloneNodecSs |jj�S)N)rr7)rrrr� hasContentmsz-getDomBuilder..NodeBuilder.hasContentcSs(|jdkrtd|jfS|j|jfSdS)NZhtml)� namespacer r)rrrr� getNameTupleps z/getDomBuilder..NodeBuilder.getNameTuple)N)r&r'r(r�propertyrAr/r5r2r6r:r;r=rr>r@rBZ nameTupler)r)r?rrr?5s     r?cs�eZdZ�fdd�Z��fdd�Zd�fdd� Z�fdd �Z�fd d �Zd d �Z�fdd�Z dd�Z dd�Z ddd�Z �Z dZdS)z"getDomBuilder..TreeBuildercs�j�jddd�|_tj|�S)N)�getDOMImplementationZcreateDocument�dom�weakref�proxy)r)�Domrr� documentClassysz0getDomBuilder..TreeBuilder.documentClasscsR|d}|d}|d}�j�}|j|||�}|jj�|���tkrN|j|_dS)Nr�publicId�systemId)rDZcreateDocumentTypeZdocumentr/rrEr)r�tokenrrJrKZdomimplZdoctype)rHr?rr� insertDoctype}sz0getDomBuilder..TreeBuilder.insertDoctypeNcs6|dkr |jdkr |jj|�}n|jj||�}�|�S)N)ZdefaultNamespacerEZ createElementZcreateElementNS)rrrAr0)r?rr� elementClass�sz/getDomBuilder..TreeBuilder.elementClasscs�|jj|��S)N)rEZ createComment)rr3)r?rr� commentClass�sz/getDomBuilder..TreeBuilder.commentClasscs�|jj��S)N)rEZcreateDocumentFragment)r)r?rr� fragmentClass�sz0getDomBuilder..TreeBuilder.fragmentClasscSs|jj|j�dS)N)rEr/r)rr0rrrr/�sz.getDomBuilder..TreeBuilder.appendChildcs�|�S)Nr)rr)�testSerializerrrrQ�sz1getDomBuilder..TreeBuilder.testSerializercSs|jS)N)rE)rrrr� getDocument�sz.getDomBuilder..TreeBuilder.getDocumentcSstjj|�jS)N)r � TreeBuilder� getFragmentr)rrrrrT�sz.getDomBuilder..TreeBuilder.getFragmentcSsp|}||krtjj|||�nNt|jd�rXtj|jjkrXt|jj�|j_|jjj tj�|jj |jj |��dS)N�_child_node_types) r rSr5r,rEr� TEXT_NODErUr!�appendr/r1)rr3r.rrrr5�s z-getDomBuilder..TreeBuilder.insertText)N)N)r&r'r(rIrMrNrOrPr/rQrRrTr5�implementationrr)rH�DomImplementationr?rQrrrSxs      rScs0|j�g�d��fdd� ��|d�dj��S)Nrc s$|jtjkr�|jrj|js|jrP|jp&d}|jp0d}�jdd||j||f�q~�jdd||jf�n�jdd|f��nz|jtjkr��jd��n`|jtjkr��jd��nF|jtj krވjdd||j f��n|jtj k�r�jd d||j f�n�t |d ��r6|j dk �r6d tj|j |jf}n|j}�jd d||f�|j��r�g}xftt|j��D]T}|jj|�}|j}|j}|j } | �r�d tj| |jf}n|j}|j||f��qpWx2t|�D]&\}}�jd d|d||f��q�W|d7}x|jD]} �| |��q WdS)N�z|%s� z|%sz|%sz #documentz#document-fragmentz|%sz|%s"%s"r+z%s %sz|%s<%s>z |%s%s="%s"r )ZnodeTyperZDOCUMENT_TYPE_NODErrJrKrWZ DOCUMENT_NODEZDOCUMENT_FRAGMENT_NODEZ COMMENT_NODEZ nodeValuerVr,r+r �prefixesr*Z hasAttributes�rangerr�itemrZ localName�sortedr8) r�indentrJrKrr�irr�nsr9)�rv�serializeElementrrrd�sN             " z?getDomBuilder..testSerializer..serializeElement� )r)Z normalize�join)rr)rcrdrrQ�s . z%getDomBuilder..testSerializer)rr rrS�locals)rYrSr)r)rHrYr?rQr� getDomBuilders $C:6rh)Z __future__rrr� collectionsrZxml.domrrrFrZr r r Z_utilsr rhZ getDomModulerrrr�s     _