B
    &‹dœ+  ã            ?   @   s~  d dl Z ddlmZmZ ddlmZmZ ddlmZ e  	d¡Z
e  	de j¡Ze  	d¡Ze j	d	e jd
Ze j	de jd
Ze j	de jd
Ze j	de jd
Zdddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKh?ZdLdM e¡ dN ZdOZe  	dP¡Ze  	dQ¡ZG dRdS„ dSeƒZdTdU„ ZdVdW„ ZdXdY„ ZdZd[„ Zd\d]„ ZdS )^é    Né   )ÚScannerParserÚMatcher)ÚESCAPE_CHARÚ
LINK_LABEL)Úunikeyz\r\n|\rz^ +$z^ {1,4}z^( {0,3})\t)Úflagsz^ {0,1}z^ *>ÚaddressZarticleZasideÚbaseZbasefontZ
blockquoteÚbodyÚcaptionÚcenterÚcolZcolgroupÚddÚdetailsZdialogÚdirÚdivÚdlÚdtZfieldsetZ
figcaptionZfigureÚfooterÚformÚframeZframesetZh1Zh2Zh3Zh4Zh5Zh6ÚheadÚheaderÚhrÚhtmlZiframeZlegendZliÚlinkÚmainZmenuZmenuitemÚmetaZnavZnoframesÚolZoptgroupÚoptionÚpÚparamÚsectionÚsourceÚsummaryÚtableZtbodyÚtdZtfootÚthZtheadÚtitleÚtrÚtrackZulz</?(?:ú|z%)(?: +|\n|/?>)[\s\S]*?(?:\n{2,}|\n*$)zÛ<(?!script|pre|style)([a-z][\w-]*)(?: +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?)*? */?>(?=\s*\n)[\s\S]*?(?:\n{2,}|\n*$)|</(?!script|pre|style)[a-z][\w-]*\s*>(?=\s*\n)[\s\S]*?(?:\n{2,}|\n*$)z\n{2,}z^ *([\*\+-]|\d+[.)])c                   sR  e Zd ZeZe d¡Ze de d ¡Z	e d¡Z
e d¡Ze d¡Ze d¡Ze d¡Ze d	¡Ze d
¡Ze de d e d ej¡ZdZdZdZ‡ f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&d'„ Z#d(d)„ Z$d*d+„ Z%e&d,d-„ ƒZ'd.d/„ Z(d0d1„ Z)d2d3„ Z*d;d5d6„Z+d7d8„ Z,d9d:„ Z-‡  Z.S )<ÚBlockParserz\n+z	 {0,3}\[(zM)\]:(?:[ \t]*\n)?[ \t]*<?([^\s>]+)>?(?:[ \t]*\n)?(?: +["(]([^\n]+)[")])? *\n+z> {0,3}(#{1,6})(?!#+)(?: *\n+|\s+([^\n]*?)(?:\n+|\s+?#+\s*\n+))z([^\n]+)\n *(=|-){2,}[ \t]*\n+z; {0,3}((?:-[ \t]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})\n+z"(?:\n*)(?:(?: {4}| *\t)[^\n]+\n*)+zI( {0,3})(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\2[~`]* *\n+|$)z(?: {0,3}>[^\n]*\n)+z6( {0,3})([\*\+-]|\d{1,9}[.)])(?:[ \t]*|[ \t][^\n]+)\n+z² {0,3}(?:<(script|pre|style)[\s>][\s\S]*?(?:</\1>[^\n]*\n+|$)|<!--(?!-?>)[\s\S]*?-->[^\n]*\n+|<\?[\s\S]*?\?>[^\n]*\n+|<![A-Z][\s\S]*?>[^\n]*\n+|<!\[CDATA\[[\s\S]*?\]\]>[^\n]*\n+|r,   ú)é   )
ÚnewlineÚthematic_breakZfenced_codeZindent_codeÚblock_quoteÚ
block_htmlÚ
list_startZaxt_headingZsetex_headingZdef_linkc                s*   t t| ƒ ¡  t| jƒ| _t| jƒ| _d S )N)Úsuperr-   Ú__init__ÚlistÚ
RULE_NAMESÚblock_quote_rulesÚ
list_rules)Úself)Ú	__class__© úa/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/mistune/block_parser.pyr6   c   s    zBlockParser.__init__c             C   s
   dddœS )Nr0   T)ÚtypeÚblankr=   )r;   ÚmÚstater=   r=   r>   Úparse_newlineh   s    zBlockParser.parse_newlinec             C   s
   dddœS )Nr1   T)r?   r@   r=   )r;   rA   rB   r=   r=   r>   Úparse_thematic_breakk   s    z BlockParser.parse_thematic_breakc             C   s2   t | d¡ƒ}t d|¡}| d¡}|  |d |¡S )Nr   Ú Ú
)Úexpand_leading_tabÚgroupÚ_INDENT_CODE_TRIMÚsubÚlstripÚtokenize_block_code)r;   rA   rB   ÚtextÚcoder=   r=   r>   Úparse_indent_coden   s    
zBlockParser.parse_indent_codec             C   sb   t  d| d¡¡}| d¡}| d¡p(d}|rP|rPt d| tj¡}| d|¡}|  |d ||¡S )Nz\1é   r   é   rE   ú^rF   )r   rJ   rH   ÚreÚcompileÚMrL   )r;   rA   rB   ÚinfoÚspacesrN   Z_trim_patternr=   r=   r>   Úparse_fenced_codet   s    
zBlockParser.parse_fenced_codec             C   s   d|dœ}|r|f|d< |S )NZ
block_code)r?   ÚrawÚparamsr=   )r;   rN   rV   rB   Útokenr=   r=   r>   rL   }   s    

zBlockParser.tokenize_block_codec             C   sD   t | d¡ƒ}| d¡pd}| ¡ }t|ƒdhkr6d}|  |||¡S )Nr   é   rE   ú#)ÚlenrH   ÚstripÚsetÚtokenize_heading)r;   rA   rB   ÚlevelrM   r=   r=   r>   Úparse_axt_headingƒ   s    zBlockParser.parse_axt_headingc             C   s6   |  d¡dkrdnd}|  d¡}| ¡ }|  |||¡S )Nr\   ú=r   )rH   r_   ra   )r;   rA   rB   rb   rM   r=   r=   r>   Úparse_setex_heading‹   s    
zBlockParser.parse_setex_headingc             C   s   d||fdœS )NÚheading)r?   rM   rZ   r=   )r;   rM   rb   rB   r=   r=   r>   ra   ‘   s    zBlockParser.tokenize_headingc             C   s,   || j d kr&t| jƒ}| d¡ |S | jS )Nr   r2   )ÚBLOCK_QUOTE_MAX_DEPTHr7   r9   Úremove)r;   ÚdepthÚrulesr=   r=   r>   Úget_block_quote_rules”   s
    

z!BlockParser.get_block_quote_rulesc             C   st   |  dd¡d }||d< t d| d¡¡}t|ƒ}t d|¡}t|ƒ}|  |¡}|  |||¡}|d |d< d|dœS )NZblock_quote_depthr   r   rE   r2   )r?   Úchildren)	ÚgetÚ_BLOCK_QUOTE_LEADINGrJ   rH   rG   Ú_BLOCK_QUOTE_TRIMÚcleanup_linesrk   Úparse)r;   rA   rB   ri   rM   rj   rl   r=   r=   r>   Úparse_block_quote›   s    
zBlockParser.parse_block_quotec             C   s,   || j d kr&t| jƒ}| d¡ |S | jS )Nr   r4   )ÚLIST_MAX_DEPTHr7   r:   rh   )r;   ri   rj   r=   r=   r>   Úget_list_rulesª   s
    

zBlockParser.get_list_rulesc                sà   g }|  d¡}|  d¡}t|| ¡ ||ƒ\}}dd |¡ ¡ k}t|ƒdk}	|	rnt|d d… ƒ}
|
dkrrd }
nd }
ˆ dg ¡}| |¡ |ˆd< t|ƒ‰ ˆ 	ˆ ¡‰‡ ‡‡‡fdd„|D ƒ}| 
¡  |	ˆ |
f}d	||d
œ}||fS )Nr   r\   z

rE   éÿÿÿÿÚlist_tightsc                s   g | ]}ˆ  |ˆ ˆˆ¡‘qS r=   )Úparse_list_item)Ú.0Úitem)ri   rj   r;   rB   r=   r>   ú
<listcomp>Ç   s   z0BlockParser.parse_list_start.<locals>.<listcomp>r7   )r?   rl   rZ   )rH   Ú_find_list_itemsÚstartÚjoinr_   r^   Úintrm   Úappendrt   Úpop)r;   rA   rB   ÚstringÚitemsrW   ÚmarkerÚposZtightZorderedr|   rv   rl   rZ   r[   r=   )ri   rj   r;   rB   r>   Úparse_list_start±   s,    




zBlockParser.parse_list_startc             C   s8   |   |¡}|sdddœg}n|  |||¡}d|f|dœS )NÚ
block_textrE   )r?   rM   Z	list_item)r?   rZ   rl   )Únormalize_list_item_textrq   )r;   rM   ri   rB   rj   rl   r=   r=   r>   rw   Ï   s    
zBlockParser.parse_list_itemc             C   s¬   t | ƒ}t d| ¡} |  ¡ s dS |t | ƒ }t| ƒ} |  d¡rT| dd … } |d7 }n*t | ƒ}t d| ¡} |t|t | ƒ dƒ7 }d| kr¨t 	dt
|ƒ d ¡}| d| ¡} | S )NrE   z     r   z
 z\n {1,Ú}z\n)r^   Ú_LIST_BULLETrJ   r_   rG   Ú
startswithÚ_TRIM_4ÚmaxrS   rT   Ústr)rM   Útext_lengthÚspaceÚpatternr=   r=   r>   r‡   Û   s     

z$BlockParser.normalize_list_item_textc             C   s   |  d¡ ¡ }d|dœS )Nr   r3   )r?   rY   )rH   Úrstrip)r;   rA   rB   r   r=   r=   r>   Úparse_block_htmló   s    zBlockParser.parse_block_htmlc             C   sB   t | d¡ƒ}| d¡}| d¡}||d kr>||f|d |< d S )Nr   r\   rP   Z	def_links)r   rH   )r;   rA   rB   Úkeyr   r)   r=   r=   r>   Úparse_def_link÷   s
    

zBlockParser.parse_def_linkc             C   s\   |  d¡}|r$|d r$d| ¡ dœS g }x.t |¡D ] }| ¡ }|r4| d|dœ¡ q4W |S )Nrv   ru   r†   )r?   rM   Z	paragraph)rm   r_   Ú_PARAGRAPH_SPLITÚsplitr   )r;   rM   rB   rv   ÚtokensÚsr=   r=   r>   Ú
parse_textþ   s    
zBlockParser.parse_textNc             C   s    |d kr| j }t|  |||¡ƒS )N)rj   r7   Z_scan)r;   r˜   rB   rj   r=   r=   r>   rq   
  s    zBlockParser.parsec             C   s   |   |||¡}|j |¡S )N)Ú_iter_renderÚrendererÚfinalize)r;   r—   ÚinlinerB   Údatar=   r=   r>   Úrender  s    zBlockParser.renderc             c   sš   x”|D ]Œ}|j  |d ¡}d|kr,|ƒ V  qd|krH|  |d ||¡}n d|krZ|d }n||d |ƒ}| d¡}|rˆ||f|žŽ V  q||ƒV  qW d S )Nr?   r@   rl   rY   rM   rZ   )r›   Z_get_methodrŸ   rm   )r;   r—   r   rB   ÚtokÚmethodrl   rZ   r=   r=   r>   rš     s    


zBlockParser._iter_render)N)/Ú__name__Ú
__module__Ú__qualname__r   Zscanner_clsrS   rT   ÚNEWLINEr   ZDEF_LINKZAXT_HEADINGZSETEX_HEADINGZTHEMATIC_BREAKZINDENT_CODEZFENCED_CODEZBLOCK_QUOTEZ
LIST_STARTÚ_BLOCK_HTML_RULE6Ú_BLOCK_HTML_RULE7ÚIZ
BLOCK_HTMLrs   rg   r8   r6   rC   rD   rO   rX   rL   rc   re   ra   rk   rr   rt   r…   rw   Ústaticmethodr‡   r’   r”   r™   rq   rŸ   rš   Ú__classcell__r=   r=   )r<   r>   r-   ,   sV   


	
r-   c             C   s   t  d| ¡} t d| ¡} | S )NrF   rE   )Ú
_NEW_LINESrJ   Ú_BLANK_LINES)r˜   r=   r=   r>   rp   (  s    rp   c             C   s   t  t| ¡S )N)Ú_EXPAND_TABrJ   Ú_expand_tab_repl)rM   r=   r=   r>   rG   .  s    rG   c             C   s   |   d¡}|ddt|ƒ   S )Nr   ú rQ   )rH   r^   )rA   r˜   r=   r=   r>   r®   2  s    
r®   c             C   s¶   dt t| ƒt|ƒ ƒ d }t|ƒdkrH|d dkr>|d }qV|d }n|t |¡ }dt t|ƒd ƒ d	 }t|ƒd
kr”dt t|ƒd
 ƒ d }nd}t |d | d | d ¡S )Nz( {0,z})r   ru   Ú.z	\d{0,9}\.z	\d{0,9}\)z {z,}rQ   z,}\tz *\tz"(?:[ \t]*|[ \t]+[^\n]+)\n+(?:\1(?:r,   z)[^\n]+\n+)*)r   r^   rS   ÚescaperT   )rW   rƒ   ÚprefixÚs1Ús2r=   r=   r>   Ú_create_list_item_pattern7  s    

rµ   c       
      C   s’   g }|dkrt  d¡}nd }t||ƒ}xb| | |¡}|s:P | d¡}|rT| |¡rTP | d¡}	|	|krt|	}t||ƒ}| |¡ | ¡ }q(W ||fS )N>   ú-Ú*z' *((?:-[ \t]*){3,}|(?:\*[ \t]*){3,})\n+r   r   )rS   rT   rµ   ÚmatchrH   r   Úend)
r   r„   rW   rƒ   r‚   Zis_hrr   rA   rM   Z
new_spacesr=   r=   r>   r{   N  s(    




r{   )rS   Úscannerr   r   Zinline_parserr   r   Úutilr   rT   r«   rU   r¬   r‹   r­   rI   ro   rn   Z_BLOCK_TAGSr}   r¦   r§   r•   r‰   r-   rp   rG   r®   rµ   r{   r=   r=   r=   r>   Ú<module>   s<   



 }