3 Pf"@s|ddlmZmZmZddlmZddlmZmZddl Z ddl m Z ddl m Z dd l m Z dd lmZd d ZeeZdS) )absolute_importdivisionunicode_literals)MutableMapping)minidomNodeN)base) constants) namespaces)moduleFactoryFactorycsVGdddtGfdddtjGfdddtj}ddtS) Nc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)zgetDomBuilder..AttrListcSs ||_dS)N)element)selfrr/usr/lib/python3.6/dom.py__init__sz(getDomBuilder..AttrList.__init__cSst|jjjS)N)iterr attributeskeys)rrrr__iter__sz(getDomBuilder..AttrList.__iter__cSs4t|trtn |jjj|}||_||jj|<dS)N) isinstancetupleNotImplementedErrorr ownerDocumentZcreateAttributevaluer)rnamerattrrrr __setitem__s  z+getDomBuilder..AttrList.__setitem__cSs t|jjS)N)lenrr)rrrr__len__ sz'getDomBuilder..AttrList.__len__cSst|jjjS)N)listrritems)rrrrr"#sz%getDomBuilder..AttrList.itemscSst|jjjS)N)r!rrvalues)rrrrr#&sz&getDomBuilder..AttrList.valuescSs"t|trtn|jj|jSdS)N)rrrrrr)rrrrr __getitem__)s z+getDomBuilder..AttrList.__getitem__cSst|trtn |jj|=dS)N)rrrrr)rrrrr __delitem__/s z+getDomBuilder..AttrList.__delitem__N) __name__ __module__ __qualname__rrrr r"r#r$r%rrrrAttrListsr)cseZdZddZeddZddZddd Zd d Zd d Z ddZ fddZ ddZ ee e Z fddZddZddZeeZdS)z"getDomBuilder..NodeBuildercSstjj||j||_dS)N)r rrnodeNamer)rrrrrr6sz+getDomBuilder..NodeBuilder.__init__cSst|jdr|jjpdS)N namespaceURI)hasattrrr+)rrrr:s z+getDomBuilder..NodeBuilder.cSs||_|jj|jdS)N)parentr appendChild)rnoderrrr/=sz.getDomBuilder..NodeBuilder.appendChildNcSs4|jjj|}|r$|jj||jn |jj|dS)N)rrcreateTextNode insertBeforer/)rdatar2textrrr insertTextAsz-getDomBuilder..NodeBuilder.insertTextcSs|jj|j|j||_dS)N)rr2r.)rr0ZrefNoderrrr2Hsz/getDomBuilder..NodeBuilder.insertBeforecSs&|jj|jkr|jj|jd|_dS)N)rZ parentNode removeChildr.)rr0rrrr6Lsz.getDomBuilder..NodeBuilder.removeChildcSs:x.|jjr.|jj}|jj||jj|qWg|_dS)N)r hasChildNodesZ firstChildr6r/ childNodes)rZ newParentchildrrrreparentChildrenQs   z3getDomBuilder..NodeBuilder.reparentChildrencs |jS)N)r)r)r)rr getAttributesXsz0getDomBuilder..NodeBuilder.getAttributescSsz|rvxpt|jD]`\}}t|trd|ddk rF|dd|d}n|d}|jj|d||q|jj||qWdS)Nr:rr )r!r"rrrZsetAttributeNSZ setAttribute)rrrrZ qualifiedNamerrr setAttributes[s  z0getDomBuilder..NodeBuilder.setAttributescs|jjdS)NF)r cloneNode)r) NodeBuilderrrr>jsz,getDomBuilder..NodeBuilder.cloneNodecSs |jjS)N)rr7)rrrr hasContentmsz-getDomBuilder..NodeBuilder.hasContentcSs(|jdkrtd|jfS|j|jfSdS)NZhtml) namespacer r)rrrr getNameTupleps z/getDomBuilder..NodeBuilder.getNameTuple)N)r&r'r(rpropertyrAr/r5r2r6r:r;r=rr>r@rBZ nameTupler)r)r?rrr?5s     r?cseZdZfddZfddZdfdd Zfdd Zfd d Zd d ZfddZ ddZ ddZ dddZ Z dZdS)z"getDomBuilder..TreeBuildercsjjddd|_tj|S)N)getDOMImplementationZcreateDocumentdomweakrefproxy)r)Domrr documentClassysz0getDomBuilder..TreeBuilder.documentClasscsR|d}|d}|d}j}|j|||}|jj|tkrN|j|_dS)NrpublicIdsystemId)rDZcreateDocumentTypeZdocumentr/rrEr)rtokenrrJrKZdomimplZdoctype)rHr?rr insertDoctype}sz0getDomBuilder..TreeBuilder.insertDoctypeNcs6|dkr |jdkr |jj|}n|jj||}|S)N)ZdefaultNamespacerEZ createElementZcreateElementNS)rrrAr0)r?rr elementClasssz/getDomBuilder..TreeBuilder.elementClasscs|jj|S)N)rEZ createComment)rr3)r?rr commentClasssz/getDomBuilder..TreeBuilder.commentClasscs|jjS)N)rEZcreateDocumentFragment)r)r?rr fragmentClasssz0getDomBuilder..TreeBuilder.fragmentClasscSs|jj|jdS)N)rEr/r)rr0rrrr/sz.getDomBuilder..TreeBuilder.appendChildcs|S)Nr)rr)testSerializerrrrQsz1getDomBuilder..TreeBuilder.testSerializercSs|jS)N)rE)rrrr getDocumentsz.getDomBuilder..TreeBuilder.getDocumentcSstjj|jS)N)r TreeBuilder getFragmentr)rrrrrTsz.getDomBuilder..TreeBuilder.getFragmentcSsp|}||krtjj|||nNt|jdrXtj|jjkrXt|jj|j_|jjj tj|jj |jj |dS)N_child_node_types) r rSr5r,rEr TEXT_NODErUr!appendr/r1)rr3r.rrrr5s z-getDomBuilder..TreeBuilder.insertText)N)N)r&r'r(rIrMrNrOrPr/rQrRrTr5implementationrr)rHDomImplementationr?rQrrrSxs      rScs0|jgdfdd |ddjS)Nrc s$|jtjkr|jrj|js|jrP|jp&d}|jp0d}jdd||j||fq~jdd||jfnjdd|fnz|jtjkrjdn`|jtjkrjdnF|jtj krވjdd||j fn|jtj krjd d||j fnt |d r6|j dk r6d tj|j |jf}n|j}jd d||f|jrg}xftt|jD]T}|jj|}|j}|j}|j } | rd tj| |jf}n|j}|j||fqpWx2t|D]&\}}jd d|d||fqW|d7}x|jD]} | |q WdS)Nz|%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 hasAttributesrangerritemrZ localNamesortedr8) rindentrJrKrrirrnsr9)rvserializeElementrrrdsN             " z?getDomBuilder..testSerializer..serializeElement )r)Z normalizejoin)rr)rcrdrrQs . z%getDomBuilder..testSerializer)rr rrSlocals)rYrSr)r)rHrYr?rQr getDomBuilders $C:6rh)Z __future__rrr collectionsrZxml.domrrrFrZr r r Z_utilsr rhZ getDomModulerrrrs     _