3
�PfK � @ s� d dl mZmZmZ d dlmZ ddlmZmZm Z ddddd d
ddd
g Z
ejZej
ZejZejZejZejZdZdje �Z G dd� de�ZG dd
� d
e�ZdS )� )�absolute_import�division�unicode_literals)�Node� )�
namespaces�voidElements�spaceCharacters�DOCUMENT�DOCTYPE�TEXT�ELEMENT�COMMENT�ENTITY�UNKNOWN�
TreeWalker�NonRecursiveTreeWalkerz<#UNKNOWN#>� c @ sh e Zd Zdd� Zdd� Zdd� Zddd �Zd
d� Zdd
� Zdd� Z dd� Z
ddd�Zdd� Zdd� Z
dS )r c C s
|| _ d S )N)�tree)�selfr � r �/usr/lib/python3.6/base.py�__init__ s zTreeWalker.__init__c C s t �d S )N)�NotImplementedError)r r r r �__iter__ s zTreeWalker.__iter__c C s
d|d�S )NZSerializeError)�type�datar )r �msgr r r �error s zTreeWalker.errorFc c s$ d|||d�V |r | j d�V d S )NZEmptyTag)r �name� namespacer zVoid element has children)r )r r r �attrs�hasChildrenr r r �emptyTag s
zTreeWalker.emptyTagc C s d|||d�S )NZStartTag)r r r r r )r r r r! r r r �startTag% s zTreeWalker.startTagc C s d||d�S )NZEndTag)r r r r )r r r r r r �endTag+ s zTreeWalker.endTagc c sx |}|j t�}|d t|�t|� � }|r6d|d�V |}|jt�}|t|�d � }|rdd|d�V |rtd|d�V d S )NZSpaceCharacters)r r Z
Characters)�lstripr �len�rstrip)r r Zmiddle�left�rightr r r �text0 s
zTreeWalker.textc C s
d|d�S )N�Comment)r r r )r r r r r �comment> s zTreeWalker.commentNc C s d|||d�S )NZDoctype)r r �publicId�systemIdr )r r r. r/ r r r �doctypeA s zTreeWalker.doctypec C s
d|d�S )NZEntity)r r r )r r r r r �entityG s zTreeWalker.entityc C s | j d| �S )NzUnknown node type: )r )r ZnodeTyper r r �unknownJ s zTreeWalker.unknown)F)NN)�__name__�
__module__�__qualname__r r r r# r$ r% r+ r- r0 r1 r2 r r r r r s
c @ s4 e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� ZdS )r c C s t �d S )N)r )r �noder r r �getNodeDetailsO s z%NonRecursiveTreeWalker.getNodeDetailsc C s t �d S )N)r )r r6 r r r �
getFirstChildR s z$NonRecursiveTreeWalker.getFirstChildc C s t �d S )N)r )r r6 r r r �getNextSiblingU s z%NonRecursiveTreeWalker.getNextSiblingc C s t �d S )N)r )r r6 r r r �
getParentNodeX s z$NonRecursiveTreeWalker.getParentNodec c s | j }�x�|d k �r| j|�}|d |dd � }}d}|tkrN| j|� V n�|tkrrx�| j|� D ]
}|V qbW n�|tkr�|\}}}}| s�|td kr�|tkr�x| j ||||�D ]
}|V q�W d}n| j
|||�V nV|tkr�| j|d �V n<|t
k�r| j|d �V n |tk�rd}n| j|d �V |�r@| j|�} nd } | d k �rT| }q
x�|d k �r�| j|�}|d |dd � }}|tk�r�|\}}}}|�r�|td k�s�|tk�r�| j||�V | j |k�r�d }P | j|�}
|
d k �r�|
}P n
| j|�}�qVW q
W d S )Nr � FZhtmlT)r r7 r r0 r r+ r
r r r# r$ r r- r r1 r
r2 r8 r% r9 r: )r ZcurrentNodeZdetailsr r" �tokenr r Z
attributesZ
firstChildZnextSiblingr r r r [ sZ
zNonRecursiveTreeWalker.__iter__N)r3 r4 r5 r7 r8 r9 r: r r r r r r N s
N)Z
__future__r r r Zxml.domr Z constantsr r r �__all__Z
DOCUMENT_NODEr
ZDOCUMENT_TYPE_NODEr Z TEXT_NODEr ZELEMENT_NODEr
ZCOMMENT_NODEr ZENTITY_NODEr r �join�objectr r r r r r �