3 PfK @sddlmZmZmZddlmZddlmZmZm Z ddddd d d d d g Z ej Z ej ZejZejZejZejZdZdje Z Gdd d eZGdd d eZdS))absolute_importdivisionunicode_literals)Node) namespaces voidElementsspaceCharactersDOCUMENTDOCTYPETEXTELEMENTCOMMENTENTITYUNKNOWN TreeWalkerNonRecursiveTreeWalkerz <#UNKNOWN#>c@sheZdZddZddZddZddd Zd d Zd d ZddZ ddZ dddZ ddZ ddZ dS)rcCs ||_dS)N)tree)selfrr/usr/lib/python3.6/base.py__init__szTreeWalker.__init__cCstdS)N)NotImplementedError)rrrr__iter__szTreeWalker.__iter__cCs d|dS)NZSerializeError)typedatar)rmsgrrrerrorszTreeWalker.errorFccs$d|||dV|r |jdVdS)NZEmptyTag)rname namespacerzVoid element has children)r)rr rattrs hasChildrenrrremptyTags  zTreeWalker.emptyTagcCsd|||dS)NZStartTag)rrr rr)rr rr!rrrstartTag%szTreeWalker.startTagcCs d||dS)NZEndTag)rrr r)rr rrrrendTag+szTreeWalker.endTagccsx|}|jt}|dt|t|}|r6d|dV|}|jt}|t|d}|rdd|dV|rtd|dVdS)NZSpaceCharacters)rrZ Characters)lstripr lenrstrip)rrZmiddleleftrightrrrtext0s    zTreeWalker.textcCs d|dS)NComment)rrr)rrrrrcomment>szTreeWalker.commentNcCsd|||dS)NZDoctype)rrpublicIdsystemIdr)rrr.r/rrrdoctypeAszTreeWalker.doctypecCs d|dS)NZEntity)rrr)rrrrrentityGszTreeWalker.entitycCs|jd|S)NzUnknown node type: )r)rZnodeTyperrrunknownJszTreeWalker.unknown)F)NN)__name__ __module__ __qualname__rrrr#r$r%r+r-r0r1r2rrrrrs  c@s4eZdZddZddZddZddZd d Zd S) rcCstdS)N)r)rnoderrrgetNodeDetailsOsz%NonRecursiveTreeWalker.getNodeDetailscCstdS)N)r)rr6rrr getFirstChildRsz$NonRecursiveTreeWalker.getFirstChildcCstdS)N)r)rr6rrrgetNextSiblingUsz%NonRecursiveTreeWalker.getNextSiblingcCstdS)N)r)rr6rrr getParentNodeXsz$NonRecursiveTreeWalker.getParentNodec cs|j}x|dk r|j|}|d|dd}}d}|tkrN|j|Vn|tkrrx|j|D] }|VqbWn|tkr|\}}}}| s|tdkr|tkrx|j ||||D] }|VqWd}n|j |||VnV|t kr|j |dVn<|t kr|j|dVn |tkrd}n|j|dV|r@|j|} nd} | dk rT| }q x|dk r|j|}|d|dd}}|tkr|\}}}}|r|tdks|tkr|j||V|j|krd}P|j|} | dk r| }Pn |j|}qVWq WdS)NrFZhtmlT)rr7r r0r r+r rrr#r$rr-rr1r r2r8r%r9r:) rZ currentNodeZdetailsrr"tokenr rZ attributesZ firstChildZ nextSiblingrrrr[sZ                 zNonRecursiveTreeWalker.__iter__N)r3r4r5r7r8r9r:rrrrrrNs N)Z __future__rrrZxml.domrZ constantsrrr __all__Z DOCUMENT_NODEr ZDOCUMENT_TYPE_NODEr Z TEXT_NODEr Z ELEMENT_NODEr Z COMMENT_NODErZ ENTITY_NODErrjoinobjectrrrrrrs  :