o
    ^i                     @  s   d Z ddlmZ ddlZddlmZmZmZmZm	Z	 ddl
mZmZmZ er2ddlmZ ddlmZ d	Zed
Zd6ddZd7ddZd8d!d"Zd9d$d%Zd:d'd(Zd;d+d,Zd<d/d0Zd=d4d5ZdS )>z8because list is complex, split list parser in a new file    )annotationsN)TYPE_CHECKINGAnyIterableOptionalMatch   )expand_leading_tab
expand_tab	strip_end)BlockParser)
BlockStatezM^(?P<list_1> {0,3})(?P<list_2>[\*\+-]|\d{1,9}[.)])(?P<list_3>[ \t]*|[ \t].+)$z(\s*)\Sblock'BlockParser'm
Match[str]state'BlockState'returnintc                 C  sD  | d}| s| }|r|S | d}t|dk}| }dg d|d ||dd}|rIt|d	d }	|	dkrI| }|rC|S |	|d
 d< | d |_| d||f}
|| jd krjt	| j
}|d n| j
}t|d }|
rt| ||
|||}
|
su|dd	}t| |r|d}|j|| |S || |jS )z,Parse tokens for ordered and unordered list.list_3list_2r   listT)depthordered)typechildrentightbulletattrsNr    startlist_1_end_pos
_tok_index)groupstripappend_paragraphlenr   r   endcursormax_nested_levelr   
list_rulesremove_get_list_bullet_parse_list_itempop_transform_tight_listtokensinsertappend_token)r   r   r   textend_posmarkerr   r   tokenr!   groupsrulesr   index r<   N/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/mistune/list_parser.py
parse_list   sR   





r>   r8   dict[str, Any]Nonec                 C  sV   | d r'| d D ] }|d D ]}|d dkrd|d< q|d dkr%t | qqd S d S )Nr   r   r   	paragraph
block_textr   )r1   )r8   	list_itemtokr<   r<   r=   r1   O   s   
r1   r   strr9   tuple[str, str, str]r:   	list[str]tuple[str, str, str] | Nonec                   sf  |\}}}t |t | }	t||	\}}
t||	}g d}djv r(|dd fdd|D }|	dk rBt|	  fdd|D }|dd|f d	d
d |D }t|tj	}d}d }d}|j
}d|
 }||jk r| }||}j|r|d7 }d}||_
qht|}||r|r|s| snf||7 }d}||_
qh||j|j
}|r|j}|dkr|rd|d< |d|d|df}| d |_
n/|dkrn*t |j}||}|r||d< ||d< n|r||sn||7 }||_
||jk sm|t||
7 }|t|}|| |d r!t|jr!d|d< |d d|jd |r1|S d S )N)thematic_breakfenced_codeatx_headingblock_quote
block_htmlr   fenced_directiver   c                   s   g | ]	}| j | fqS r<   )specification).0name)r   r<   r=   
<listcomp>r   s    z$_parse_list_item.<locals>.<listcomp>   c                   s"   g | ]\}}|| d  dfqS )3r   )replace)rP   np)_repl_wr<   r=   rR   u   s   " rC   |c                 s  s    | ]}d | V  qdS )z(?P<%s>(?<=\n)%s)Nr<   )rP   pairr<   r<   r=   	<genexpr>x   s    z#_parse_list_item.<locals>.<genexpr> F 
Tr   
listitem_1
listitem_2
listitem_3r   r$   r#   r   )r   r   )r(   _compile_continue_width_compile_list_item_patternrO   r3   rE   joinrecompileMr*   
cursor_maxfind_line_endget_text
BLANK_LINEmatchr	   
startswithr&   src	lastgroupr%   r)   r2   parse_method_clean_list_item_textchild_stater   parse_is_loose_listappend)r   r   r9   r8   r   r:   spacesr7   r5   leading_widthcontinue_widthitem_patternlist_item_breakspairsregexscrn   
next_groupprev_blank_lineposcontinue_spaceliner   tok_type	tok_indexr6   childr<   )rX   r   r=   r/   Z   s   







0r/   cc                 C  sH   | dkrd}|S | dkrd}|S | dkrd}|S | dkr d}|S d	}|S )
N.z	\d{0,9}\.)z	\d{0,9}\)*z\*+z\+-r<   )r   r   r<   r<   r=   r.      s   	r.   rw   c                 C  s$   |dkrd}dt | d |  d S )NrS   z^(?P<listitem_1> {0,z})(?P<listitem_2>z$)(?P<listitem_3>[ \t]*|[ \t][^\n]+)$)rE   )r   rw   r<   r<   r=   rc      s   rc   r5   tuple[str, int]c                 C  sh   t | d} t| } t| }|r(| drd}nt|d}| |d  d } nd}d} || }| |fS )NrS   z     r   r^   r\   )r	   r
   _LINE_HAS_TEXTrl   rm   r(   r%   )r5   rw   m2space_widthrx   r<   r<   r=   rb      s   


rb   rn   rx   c                 C  s`   g }d| }|  d}|D ]}||r%||dd}t|}|| q|| qd|S )Nr]   r^   r\   r   )splitrm   rU   r
   ru   rd   )rn   rx   rv
trim_spacelinesr   r<   r<   r=   rq      s   


rq   r2   Iterable[dict[str, Any]]boolc                 C  sF   d}| D ]}|d dkr dS |d dkr |d7 }|dkr  dS qdS )Nr   r   
blank_lineTrA   r   Fr<   )r2   paragraph_countrD   r<   r<   r=   rt     s   rt   )r   r   r   r   r   r   r   r   )r8   r?   r   r@   )r   r   r   rE   r9   rF   r8   r?   r   r   r:   rG   r   rH   )r   rE   r   rE   )r   rE   rw   r   r   rE   )r5   rE   rw   r   r   r   )rn   rE   rx   r   r   rE   )r2   r   r   r   )__doc__
__future__r   re   typingr   r   r   r   r   utilr	   r
   r   block_parserr   corer   LIST_PATTERNrf   r   r>   r1   r/   r.   rc   rb   rq   rt   r<   r<   r<   r=   <module>   s&    


9

k



