o
    i+                     @   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h dZdde d ZdZe 	dZe 	dZG dd deZdd Zdd Zdd Zdd 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^ *>>?   pdddldth1h2h3h4h5h6hrlioltdthtrulcoldirdivnavbasebodyformheadhtmllinkmainmenumetaasideframeparamtabletbodytfoottheadtitletrackcenterdialogfigurefooterheaderiframelegendoptionsourceaddressarticlecaptiondetailssectionsummarybasefontcolgroupfieldsetframesetmenuitemnoframesoptgroup
blockquote
figcaptionz</?(?:|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+|rH   )   )
newlinethematic_breakfenced_codeindent_codeblock_quote
block_html
list_startaxt_headingsetex_headingdef_linkc                    s*   t t|   t| j| _t| j| _d S N)superrI   __init__list
RULE_NAMESblock_quote_rules
list_rules)self	__class__ O/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/mistune/block_parser.pyrX   c   s   zBlockParser.__init__c                 C   
   dddS )NrL   Ttypeblankr`   r]   mstater`   r`   ra   parse_newlineh      
zBlockParser.parse_newlinec                 C   rb   )NrM   Trc   r`   rf   r`   r`   ra   parse_thematic_breakk   rj   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]   rg   rh   textcoder`   r`   ra   parse_indent_coden   s   
zBlockParser.parse_indent_codec                 C   sb   t d|d}|d}|dpd}|r(|r(td| tj}|d|}| |d ||S )Nz\1   r      rl   ^rm   )r   rq   ro   recompileMrs   )r]   rg   rh   infospacesru   _trim_patternr`   r`   ra   parse_fenced_codet   s   
zBlockParser.parse_fenced_codec                 C   s   d|d}|r|f|d< |S )N
block_coderd   rawparamsr`   )r]   ru   r}   rh   tokenr`   r`   ra   rs   }   s   

zBlockParser.tokenize_block_codec                 C   sD   t |d}|dpd}| }t|dhkrd}| |||S )Nr      rl   #)lenro   stripsettokenize_headingr]   rg   rh   levelrt   r`   r`   ra   parse_axt_heading   s   zBlockParser.parse_axt_headingc                 C   s6   | ddkr	dnd}| d}| }| |||S )Nr   =r   )ro   r   r   r   r`   r`   ra   parse_setex_heading   s   
zBlockParser.parse_setex_headingc                 C   s   d||fdS )Nheading)rd   rt   r   r`   )r]   rt   r   rh   r`   r`   ra   r      s   zBlockParser.tokenize_headingc                 C   ,   || j d krt| j}|d |S | jS )Nr   rP   )BLOCK_QUOTE_MAX_DEPTHrY   r[   remover]   depthrulesr`   r`   ra   get_block_quote_rules   
   

z!BlockParser.get_block_quote_rulesc                 C   st   | ddd }||d< td|d}t|}td|}t|}| |}| |||}|d |d< d|dS )Nblock_quote_depthr   r   rl   rP   )rd   children)	get_BLOCK_QUOTE_LEADINGrq   ro   rn   _BLOCK_QUOTE_TRIMcleanup_linesr   parse)r]   rg   rh   r   rt   r   r   r`   r`   ra   parse_block_quote   s   

zBlockParser.parse_block_quotec                 C   r   )Nr   rR   )LIST_MAX_DEPTHrY   r\   r   r   r`   r`   ra   get_list_rules   r   zBlockParser.get_list_rulesc                    s   g }| d}| d}t|| ||\}}dd| v}t|dk}	|	r7t|d d }
|
dkr6d }
nd }
dg }|| |d< t| 	  fdd|D }|
  |	 |
f}d	||d
}||fS )Nr   r   z

rl   list_tightsc                    s   g | ]
} | qS r`   )parse_list_item).0itemr   r   r]   rh   r`   ra   
<listcomp>   s    z0BlockParser.parse_list_start.<locals>.<listcomp>rY   )rd   r   r   )ro   _find_list_itemsstartjoinr   r   intr   appendr   pop)r]   rg   rh   stringitemsr~   markerpostightorderedr   r   r   r   r   r`   r   ra   parse_list_start   s0   




zBlockParser.parse_list_startc                 C   s8   |  |}|sdddg}n| |||}d|f|dS )N
block_textrl   rd   rt   	list_item)rd   r   r   )normalize_list_item_textr   )r]   rt   r   rh   r   r   r`   r`   ra   r      s   
zBlockParser.parse_list_itemc                 C   s   t | }td| } |  sdS |t |  }t| } | dr*| dd  } |d7 }nt | }td| } |t|t |  d7 }d| v rTt	dt
| d }|d| } | S )Nrl   z     r   z
 z\n {1,}z\n)r   _LIST_BULLETrq   r   rn   
startswith_TRIM_4maxrz   r{   str)rt   text_lengthspacepatternr`   r`   ra   r      s    

z$BlockParser.normalize_list_item_textc                 C   s   | d }d|dS )Nr   rQ   r   )ro   rstrip)r]   rg   rh   r"   r`   r`   ra   parse_block_html   s   
zBlockParser.parse_block_htmlc                 C   sF   t |d}|d}|d}||d vr!||f|d |< d S d S )Nr   r   rw   	def_links)r   ro   )r]   rg   rh   keyr#   r.   r`   r`   ra   parse_def_link   s   

zBlockParser.parse_def_linkc                 C   sX   | d}|r|d rd| dS g }t|D ]}| }|r)|d|d q|S )Nr   r   r   r   	paragraph)r   r   _PARAGRAPH_SPLITsplitr   )r]   rt   rh   r   tokenssr`   r`   ra   
parse_text   s   
zBlockParser.parse_textNc                 C   s    |d u r| j }t| |||S rV   )r   rY   _scan)r]   r   rh   r   r`   r`   ra   r   
  s   zBlockParser.parsec                 C   s   |  |||}|j|S rV   )_iter_renderrendererfinalize)r]   r   inlinerh   datar`   r`   ra   render  s   zBlockParser.renderc                 c   s    |D ]G}|j |d }d|v r| V  qd|v r$| |d ||}nd|v r-|d }n||d |}|d}|rE||g|R  V  q||V  qd S )Nrd   re   r   r   rt   r   )r   _get_methodr   r   )r]   r   r   rh   tokmethodr   r   r`   r`   ra   r     s    

zBlockParser._iter_renderrV   )/__name__
__module____qualname__r   scanner_clsrz   r{   NEWLINEr   DEF_LINKAXT_HEADINGSETEX_HEADINGTHEMATIC_BREAKINDENT_CODEFENCED_CODEBLOCK_QUOTE
LIST_START_BLOCK_HTML_RULE6_BLOCK_HTML_RULE7I
BLOCK_HTMLr   r   rZ   rX   ri   rk   rv   r   rs   r   r   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   __classcell__r`   r`   r^   ra   rI   ,   sx    




		

rI   c                 C   s   t d| } td| } | S )Nrm   rl   )
_NEW_LINESrq   _BLANK_LINES)r   r`   r`   ra   r   (  s   r   c                 C   s   t t| S rV   )_EXPAND_TABrq   _expand_tab_repl)rt   r`   r`   ra   rn   .  s   rn   c                 C   s   |  d}|ddt|   S )Nr    rx   )ro   r   )rg   r   r`   r`   ra   r   2  s   
r   c                 C   s   dt t| t|  d }t|dkr$|d dkr|d }n|d }n|t| }dt t|d  d	 }t|d
krJdt t|d
  d }nd}t|d | d | d S )Nz( {0,z})r   r   .z	\d{0,9}\.z	\d{0,9}\)z {z,}rx   z,}\tz *\tz"(?:[ \t]*|[ \t]+[^\n]+)\n+(?:\1(?:rH   z)[^\n]+\n+)*)r   r   rz   escaper{   )r~   r   prefixs1s2r`   r`   ra   _create_list_item_pattern7  s*   

r   c           
      C   s   g }|dv rt d}nd }t||}	 || |}|s!	 ||fS |d}|r2||r2	 ||fS |d}	|	|krB|	}t||}|| | }q)N>   *-z' *((?:-[ \t]*){3,}|(?:\*[ \t]*){3,})\n+r   r   )rz   r{   r   matchro   r   end)
r   r   r~   r   r   is_hrr   rg   rt   
new_spacesr`   r`   ra   r   N  s.   

	


r   )rz   scannerr   r   inline_parserr   r   utilr   r{   r   r|   r   r   r   rp   r   r   _BLOCK_TAGSr   r   r   r   r   rI   r   rn   r   r   r   r`   r`   r`   ra   <module>   s2    




 }