3
(hK              	   @   s   d dl mZmZmZ d dlmZ ddlmZmZm	Z	 ddddd	d
dddg	Z
ejZejZejZejZejZejZdZdje	Z	G dd deZG dd deZdS )    )absolute_importdivisionunicode_literals)Node   )
namespacesvoidElementsspaceCharactersDOCUMENTDOCTYPETEXTELEMENTCOMMENTENTITYUNKNOWN
TreeWalkerNonRecursiveTreeWalkerz<#UNKNOWN#> c               @   sh   e Zd Zdd Zdd Zdd Zddd	Zd
d Zdd Zdd Z	dd Z
dddZdd Zdd ZdS )r   c             C   s
   || _ d S )N)tree)selfr    r   ?/tmp/pip-install-q3hcpn_q/html5lib/html5lib/treewalkers/base.py__init__   s    zTreeWalker.__init__c             C   s   t d S )N)NotImplementedError)r   r   r   r   __iter__   s    zTreeWalker.__iter__c             C   s
   d|dS )NSerializeError)typedatar   )r   msgr   r   r   error   s    zTreeWalker.errorFc             c   s$   d|||dV  |r | j dV  d S )NEmptyTag)r   name	namespacer   zVoid element has children)r   )r   r"   r!   attrshasChildrenr   r   r   emptyTag   s
    
zTreeWalker.emptyTagc             C   s   d|||dS )NStartTag)r   r!   r"   r   r   )r   r"   r!   r#   r   r   r   startTag%   s    zTreeWalker.startTagc             C   s   d||dS )NEndTag)r   r!   r"   r   )r   r"   r!   r   r   r   endTag+   s    zTreeWalker.endTagc             c   sx   |}|j t}|d t|t|  }|r6d|dV  |}|jt}|t|d  }|rdd|dV  |rtd|dV  d S )NSpaceCharacters)r   r   
Characters)lstripr	   lenrstrip)r   r   Zmiddleleftrightr   r   r   text0   s    

zTreeWalker.textc             C   s
   d|dS )NComment)r   r   r   )r   r   r   r   r   comment>   s    zTreeWalker.commentNc             C   s   d|||dS )NDoctype)r   r!   publicIdsystemIdr   )r   r!   r5   r6   r   r   r   doctypeA   s    zTreeWalker.doctypec             C   s
   d|dS )NEntity)r   r!   r   )r   r!   r   r   r   entityG   s    zTreeWalker.entityc             C   s   | j d| S )NzUnknown node type: )r   )r   ZnodeTyper   r   r   unknownJ   s    zTreeWalker.unknown)F)NN)__name__
__module____qualname__r   r   r   r%   r'   r)   r1   r3   r7   r9   r:   r   r   r   r   r      s   

c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )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   r>   r   r   r   getFirstChildR   s    z$NonRecursiveTreeWalker.getFirstChildc             C   s   t d S )N)r   )r   r>   r   r   r   getNextSiblingU   s    z%NonRecursiveTreeWalker.getNextSiblingc             C   s   t d S )N)r   )r   r>   r   r   r   getParentNodeX   s    z$NonRecursiveTreeWalker.getParentNodec             c   s  | j }x|d k	r| j|}|d |dd   }}d}|tkrN| j| V  n|tkrrx| j| D ]
}|V  qbW n|tkr|\}}}}| s|td kr|tkrx| j	||||D ]
}|V  qW d}n| j
|||V  nV|tkr| j|d V  n<|tkr| j|d V  n |tkrd}n| j|d V  |r@| j|}	nd }	|	d k	rT|	}q
x|d k	r| j|}|d |dd   }}|tkr|\}}}}|r|td ks|tkr| j||V  | j |krd }P | j|}
|
d k	r|
}P n
| j|}qVW q
W d S )Nr      FhtmlT)r   r?   r   r7   r   r1   r   r   r   r%   r'   r   r3   r   r9   r
   r:   r@   r)   rA   rB   )r   currentNodedetailsr   r$   tokenr"   r!   
attributesZ
firstChildZnextSiblingr   r   r   r   [   sZ    









zNonRecursiveTreeWalker.__iter__N)r;   r<   r=   r?   r@   rA   rB   r   r   r   r   r   r   N   s
   N)
__future__r   r   r   xml.domr   	constantsr   r   r	   __all__ZDOCUMENT_NODEr
   ZDOCUMENT_TYPE_NODEr   Z	TEXT_NODEr   ZELEMENT_NODEr   ZCOMMENT_NODEr   ZENTITY_NODEr   r   joinobjectr   r   r   r   r   r   <module>   s   
: