U
    muf                     @   s   d dl Z ddlmZ ddlmZmZmZ dZe dZ	e j
eed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 )    N   )
BlockState)	strip_end
expand_tabexpand_leading_tabzM^(?P<list_1> {0,3})(?P<list_2>[\*\+-]|\d{1,9}[.)])(?P<list_3>[ \t]*|[ \t].+)$z( *)\S)mstatereturnc                 C   sD  | d}| s"| }|r"|S | d}t|dk}| }dg d|d ||dd}|rt|d	d }	|	dkr| }|r|S |	|d
 d< | d |_| d||f}
|| jd krt	| j
}|d n| j
}t|d }|
rt| ||
|||}
q|dd	}t| |r4|d}|j|| |S || |jS )z,Parse tokens for ordered and unordered list.Zlist_3Zlist_2r   listT)depthordered)typechildrentightbulletattrsNr   startZlist_1_end_pos
_tok_index)groupstripZappend_paragraphlenr   intendcursorZmax_nested_levelr
   Z
list_rulesremove_get_list_bullet_parse_list_itempop_transform_tight_listtokensinsertZappend_token)blockr   r   textend_posmarkerr   r   tokenr   groupsrulesr   index r+   7/tmp/pip-unpacked-wheel-8p1ovdot/mistune/list_parser.py
parse_list   sP    





r-   c                 C   sR   | d rN| d D ]<}|d D ].}|d dkr6d|d< q|d dkrt | qqd S )Nr   r   r   	paragraphZ
block_textr
   )r    )r'   	list_itemtokr+   r+   r,   r    L   s    
r    c                    s  |\}}}t |t | }	t||	\}}
t||	}d| jd fd| jd fd| jd fd| jd fd| jd fd| jd fg}|	dk rt|	  fdd	|D }|d
d|f ddd |D }t|tj	}d}d }d}|j
}d|
 }||jk r4| }||}| j|r,|d7 }d}||_
qt|}||rn|rZ|sZ| sZq4||7 }d}||_
q||j|j
}|r|j}|dkr|rd|d< |d|d|df}| d
 |_
q4|dkrސq4t |j}| ||}|r||d< ||d< q4|r$||s$q4||7 }||_
q|t||
7 }|t|}| || |d rzt|jrzd|d< |d d|jd |r|S d S )NZthematic_breakZfenced_codeZaxt_headingZblock_quoteZ
block_htmlr
      c                    s"   g | ]\}}|| d  dfqS )3r   )replace).0npZ_repl_wr+   r,   
<listcomp>g   s     z$_parse_list_item.<locals>.<listcomp>r   r/   |c                 s   s   | ]}d | V  qdS )z(?P<%s>(?<=\n)%s)Nr+   )r4   pairr+   r+   r,   	<genexpr>j   s     z#_parse_list_item.<locals>.<genexpr> F 
Tr   Z
listitem_1Z
listitem_2Z
listitem_3r   r   r   )r   r   )r   _compile_continue_width_compile_list_item_patternspecificationstrr"   joinrecompileMr   Z
cursor_maxZfind_line_endZget_textZ
BLANK_LINEmatchr   
startswithr   src	lastgroupr   r   r!   Zparse_method_clean_list_item_textZchild_stater   parse_is_loose_listappend)r#   r   r(   r'   r   r)   spacesr&   r$   leading_widthcontinue_widthZitem_patternpairsregexZscrI   Z
next_groupZprev_blank_lineposZcontinue_spaceliner   tok_typeZ	tok_indexr%   childr+   r7   r,   r   W   s    





r   c                 C   s@   | dkrd}n.| dkrd}n | dkr*d}n| dkr8d}nd	}|S )
N.z	\d{0,9}\.)z	\d{0,9}\)*z\*+z\+-r+   )cr   r+   r+   r,   r      s    r   c                 C   s$   |dkrd}dt | d |  d S )Nr1   z^(?P<listitem_1> {0,z})(?P<listitem_2>z$)(?P<listitem_3>[ \t]*|[ \t][^\n]+)$)rB   )r   rP   r+   r+   r,   r@      s    r@   c                 C   sh   t | d} t| } t| }|rP| dr0d}nt|d}| |d  d } nd}d} || }| |fS )Nr1   z     r   r>   r<   )r   r   _LINE_HAS_TEXTrG   rH   r   r   )r$   rP   m2Zspace_widthrQ   r+   r+   r,   r?      s    


r?   c                 C   s`   g }d| }|  d}|D ]:}||rJ||dd}t|}|| q|| qd|S )Nr=   r>   r<   r   )splitrH   r3   r   rN   rC   )rI   rQ   rvZ
trim_spacelinesrU   r+   r+   r,   rK      s    

rK   c                 C   sF   d}| D ]8}|d dkr dS |d dkr|d7 }|dkr dS qd S )Nr   r   Z
blank_lineTr.   r   r+   )r!   Zparagraph_countr0   r+   r+   r,   rM      s    rM   )rD   corer   utilr   r   r   ZLIST_PATTERNrE   r^   Matchr   r-   r    r   r   r@   r?   rK   rM   r+   r+   r+   r,   <module>   s   
9`
