U
    祡c                     @   sJ   d dl mZ d dlZedZdd ZG dd deZG dd	 d	eZdS )
    )unicode_literalsNzd(document|block_quote|list|item|paragraph|heading|emph|strong|link|image|custom_inline|custom_block)c                 C   s   t t| jd k	S N)researchreContainert)node r	   3/tmp/pip-unpacked-wheel-4s07asnf/commonmark/node.pyis_container   s    r   c                   @   s8   e Zd Zdd Zdd ZeZdd Zdd Zd	d
 ZdS )
NodeWalkerc                 C   s   || _ || _d| _d S NT)currentrootentering)selfr   r	   r	   r
   __init__   s    zNodeWalker.__init__c                 C   s   | j }| j}|d krtt|}|rF|rF|jr>|j| _ d| _qd| _n:|| jkrXd | _ n(|jd krr|j| _ d| _n|j| _ d| _||fS )NTF)r   r   StopIterationr   first_childr   nxtparent)r   curr   	containerr	   r	   r
   __next__   s$    

zNodeWalker.__next__c                 C   s   | S r   r	   r   r	   r	   r
   __iter__4   s    zNodeWalker.__iter__c                 C   s4   zt | \}}||dW S  tk
r.   Y dS X dS )z for backwards compatibility )r   r   N)nextr   )r   r   r   r	   r	   r
   r   7   s    zNodeWalker.nxtc                 C   s   || _ |dk| _d S r   )r   r   )r   r   r   r	   r	   r
   	resume_atB   s    zNodeWalker.resume_atN)	__name__
__module____qualname__r   r   r   r   r   r   r	   r	   r	   r
   r      s   r   c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )Nodec                 C   s   || _ d | _d | _d | _d | _d | _|| _d| _d| _d| _	d| _
d | _i | _d | _d | _d | _d| _d | _d| _d | _d | _d | _d | _d S )NFT r   )r   r   r   
last_childprvr   	sourceposZlast_line_blankZlast_line_checkedZis_openZstring_contentliteralZ	list_datainfoZdestinationtitleZ	is_fencedZ
fence_charZfence_lengthZfence_offsetlevelZon_enterZon_exit)r   Z	node_typer%   r	   r	   r
   r   H   s.    zNode.__init__c                 C   s   d | j| jS )NzNode {} [{}])formatr   r&   r   r	   r	   r
   __repr__a   s    zNode.__repr__c                 C   s   ddl m } || j d S )Nr   )pprint)r,   __dict__)r   r,   r	   r	   r
   prettyd   s    zNode.prettyc                 C   sZ   d }|   D ]H\}}|d kr"|}q|jdkrP|jdkrP| j|j7  _|  q|}qd S )Ntext)walkerr   r&   unlink)r   prevcurr_r	   r	   r
   	normalizeh   s    
zNode.normalizec                 C   s   t | S r   )r   r   r	   r	   r
   r   t   s    zNode.is_containerc                 C   s<   |   | |_| jr,|| j_| j|_|| _n|| _|| _d S r   )r1   r   r#   r   r$   r   r   childr	   r	   r
   append_childw   s    zNode.append_childc                 C   s<   |   | |_| jr,|| j_| j|_|| _n|| _|| _d S r   )r1   r   r   r$   r   r#   r6   r	   r	   r
   prepend_child   s    zNode.prepend_childc                 C   sZ   | j r| j| j _n| jr"| j| j_| jr4| j | j_ n| jrD| j | j_d | _d | _d | _ d S r   )r$   r   r   r   r#   r   r	   r	   r
   r1      s    

zNode.unlinkc                 C   sD   |   | j|_|jr||j_| |_|| _| j|_|js@||j_d S r   )r1   r   r$   r   r#   r   Zsiblingr	   r	   r
   insert_after   s    zNode.insert_afterc                 C   sD   |   | j|_|jr||j_| |_|| _| j|_|js@||j_d S r   )r1   r$   r   r   r   r:   r	   r	   r
   insert_before   s    zNode.insert_beforec                 C   s   t | S r   )r   r   r	   r	   r
   r0      s    zNode.walkerN)r   r   r    r   r+   r.   r5   r   r8   r9   r1   r;   r<   r0   r	   r	   r	   r
   r!   G   s   r!   )	
__future__r   r   compiler   r   objectr   r!   r	   r	   r	   r
   <module>   s   7