
    Lc,                        d dl Z ddlmZmZ ddlmZmZ ddlmZ  e j	        d          Z
 e j	        de j                  Z e j	        d          Z e j	        d	e j        
          Z e j	        de j        
          Z e j	        de j        
          Z e j	        de j        
          Zh dZdd                    e          z   dz   ZdZ e j	        d          Z e j	        d          Z G d de          Zd Zd Zd Zd Z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                   (    e Zd ZeZ ej        d          Z ej        dez   dz             Z	 ej        d          Z
 ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d	          Z ej        d
          Z ej        dez   dz   ez   dz   ej                  ZdZdZdZ fdZd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%e&d             Z'd Z(d  Z)d! Z*d&d#Z+d$ Z,d% Z- x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+|rI   )   )
newlinethematic_breakfenced_codeindent_codeblock_quote
block_html
list_startaxt_headingsetex_headingdef_linkc                     t          t          |                                            t          | j                  | _        t          | j                  | _        d S N)superrK   __init__list
RULE_NAMESblock_quote_rules
list_rules)self	__class__s    4lib/python3.11/site-packages/mistune/block_parser.pyr[   zBlockParser.__init__c   sF    k4  ))+++!%do!6!6t//    c                     dddS )NrN   Ttypeblank r`   mstates      rb   parse_newlinezBlockParser.parse_newlineh   s    !D111rc   c                     dddS )NrO   Tre   rh   ri   s      rb   parse_thematic_breakz BlockParser.parse_thematic_breakk   s    (4888rc   c                     t          |                    d                    }t                              d|          }|                    d          }|                     |d |          S )Nr    
)expand_leading_tabgroup_INDENT_CODE_TRIMsublstriptokenize_block_code)r`   rj   rk   textcodes        rb   parse_indent_codezBlockParser.parse_indent_coden   sW    !!''!**-- $$R..{{4  ''dE:::rc   c                 V   t          j        d|                    d                    }|                    d          }|                    d          pd}|r:|r8t          j        d|z   t          j                  }|                    d|          }|                     |dz   ||          S )Nz\1   r      rp   ^rq   )r   ru   rs   recompileMrw   )r`   rj   rk   infospacesry   _trim_patterns          rb   parse_fenced_codezBlockParser.parse_fenced_codet   s    uaggajj11wwqzzR 	/d 	/JsV|RT::M $$R..D''tT5AAArc   c                      d|d}|r|f|d<   |S )N
block_coderf   rawparamsrh   )r`   ry   r   rk   tokens        rb   rw   zBlockParser.tokenize_block_code}   s'    %d33 	'#hE(Orc   c                     t          |                    d                    }|                    d          pd}|                                }t          |          dhk    rd}|                     |||          S )Nr      rp   #)lenrs   stripsettokenize_headingr`   rj   rk   levelrx   s        rb   parse_axt_headingzBlockParser.parse_axt_heading   sj    AGGAJJwwqzzRzz||t99 	D$$T5%888rc   c                     |                     d          dk    rdnd}|                     d          }|                                }|                     |||          S )Nr   =r   )rs   r   r   r   s        rb   parse_setex_headingzBlockParser.parse_setex_heading   sS    WWQZZ3&-Awwqzzzz||$$T5%888rc   c                     d||fdS )Nheading)rf   rx   r   rh   )r`   rx   r   rk   s       rb   r   zBlockParser.tokenize_heading   s    !4E8DDDrc   c                     || j         dz
  k    r+t          | j                  }|                    d           |S | j        S )Nr   rR   )BLOCK_QUOTE_MAX_DEPTHr\   r^   remover`   depthruless      rb   get_block_quote_rulesz!BlockParser.get_block_quote_rules   sG    4-11 	/00ELL'''L%%rc   c                 ~   |                     dd          dz   }||d<   t                              d|                    d                    }t	          |          }t
                              d|          }t          |          }|                     |          }|                     |||          }|dz
  |d<   d|dS )Nblock_quote_depthr   r   rp   rR   )rf   children)	get_BLOCK_QUOTE_LEADINGru   rs   rr   _BLOCK_QUOTE_TRIMcleanup_linesr   parse)r`   rj   rk   r   rx   r   r   s          rb   parse_block_quotezBlockParser.parse_block_quote   s    		-q11A5%*!" $''AGGAJJ77!$'' $$R..T""**511::dE511%*QY!"%8<<<rc   c                     || j         dz
  k    r+t          | j                  }|                    d           |S | j        S )Nr   rT   )LIST_MAX_DEPTHr\   r_   r   r   s      rb   get_list_ruleszBlockParser.get_list_rules   sE    4&** 	))ELL&&&Lrc   c                     g }|                     d          }|                     d          }t          ||                                ||          \  }}dd                    |                                          v}t          |          dk    }	|	r t          |d d                   }
|
dk    rd }
nd }
                    dg           }|                    |           |d<   t          |           	                               fd|D             }|
                                 |	|
f}d||d	}||fS )
Nr   r   z

rp   list_tightsc                 @    g | ]}                     |          S rh   )parse_list_item).0itemr   r   r`   rk   s     rb   
<listcomp>z0BlockParser.parse_list_start.<locals>.<listcomp>   s=     
 
 
   ueU;;
 
 
rc   r\   )rf   r   r   )rs   _find_list_itemsstartjoinr   r   intr   appendr   pop)r`   rj   rk   stringitemsr   markerpostightorderedr   r   r   r   r   r   r   s   ` `            @@rb   parse_list_startzBlockParser.parse_list_start   sk   %faggiiHH
sbggenn22444f++" 	ss$$Ez Eiir225!!!*mK  ##E**
 
 
 
 
 
 

 
 
 	5%(XHHczrc   c                 z    |                      |          }|sdddg}n|                     |||          }d|f|dS )N
block_textrp   rf   rx   	list_item)rf   r   r   )normalize_list_item_textr   )r`   rx   r   rk   r   r   s         rb   r   zBlockParser.parse_list_item   s^    ,,T22 	6!-r::;HHzz$u55Hh 
 
 	
rc   c                 .   t          |           }t                              d|           } |                                 sdS |t          |           z
  }t	          |           } |                     d          r| dd          } |dz  }nMt          |           }t                              d|           } |t          |t          |           z
  d          z  }d| v r=t          j	        dt          |          z   dz             }|                    d|           } | S )Nrp   z     r   z
 z\n {1,}z\n)r   _LIST_BULLETru   r   rr   
startswith_TRIM_4maxr   r   str)rx   text_lengthspacepatterns       rb   r   z$BlockParser.normalize_list_item_text   s   $iiD))zz|| 	2c$ii'!$''??7## 	58DQJEEd))K;;r4((DSs4yy0!444E D= 	,jSZZ!7$!>??G;;ud++Drc   c                 Z    |                     d                                          }d|dS )Nr   rS   r   )rs   rstrip)r`   rj   rk   r#   s       rb   parse_block_htmlzBlockParser.parse_block_html   s+    wwqzz  ""$T222rc   c                     t          |                    d                    }|                    d          }|                    d          }||d         vr||f|d         |<   d S d S )Nr   r   r|   	def_links)r   rs   )r`   rj   rk   keyr$   r/   s         rb   parse_def_linkzBlockParser.parse_def_link   sl    QWWQZZ  wwqzz

eK(( 	4'+UmE+s###	4 	4rc   c                    |                     d          }|r|d         rd|                                dS g }t                              |          D ]0}|                                }|r|                    d|d           1|S )Nr   r   r   r   	paragraph)r   r   _PARAGRAPH_SPLITsplitr   )r`   rx   rk   r   tokensss         rb   
parse_textzBlockParser.parse_text   s    ii.. 	@;r? 	@($**,,???!''-- 	@ 	@A		A @{A>>???rc   Nc                 \    || j         }t          |                     |||                    S rY   )r   r\   _scan)r`   r   rk   r   s       rb   r   zBlockParser.parse
  s/     	JEDJJq%//000rc   c                 d    |                      |||          }|j                            |          S rY   )_iter_renderrendererfinalize)r`   r   inlinerk   datas        rb   renderzBlockParser.render  s/      77''---rc   c              #   X  K   |D ]}|j                             |d                   }d|v r |            V  3d|v r|                     |d         ||          }nd|v r	|d         }n ||d         |          }|                    d          }|r ||g|R  V   ||          V  d S )Nrf   rg   r   r   rx   r   )r   _get_methodr   r   )r`   r   r   rk   tokmethodr   r   s           rb   r   zBlockParser._iter_render  s       	' 	'C_00V==F#~ fhhS  6;;s:FF# 6u:!6#f+u55WWX&&F 'fX////////fX&&&&&&!	' 	'rc   rY   )/__name__
__module____qualname__r   scanner_clsr   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   r]   r[   rl   rn   rz   r   rw   r   r   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   __classcell__)ra   s   @rb   rK   rK   ,   s       Kbj  Grzz! %( 	( H "*	- K BJ@AAMRZ	0 N
 "*BCCK"*	$ K
 "* K A J 	 !	! $'	' *;	; >A	A 
t J NJ0 0 0 0 0
2 2 29 9 9; ; ;B B B  9 9 99 9 9E E E& & &= = =    <

 

 

   \.3 3 34 4 4
 
 
1 1 1 1. . .' ' ' ' ' ' 'rc   rK   c                 r    t                               d|           } t                              d|           } | S )Nrq   rp   )
_NEW_LINESru   _BLANK_LINES)r   s    rb   r   r   (  s/    tQAQAHrc   c                 B    t                               t          |           S rY   )_EXPAND_TABru   _expand_tab_repl)rx   s    rb   rr   rr   .  s    ??+T222rc   c                 \    |                      d          }|ddt          |          z
  z  z   S )Nr    r}   )rs   r   )rj   r   s     rb   r  r  2  s+    	

Asa#a&&j!!!rc   c                    dt          t          |           t          |          z             z   dz   }t          |          dk    r|d         dk    r|dz   }n#|dz   }n|dk    r|d	z   }n|d
k    r|dz   }n|dz   }dt          t          |          dz             z   dz   }t          |          dk    r&dt          t          |          dz
            z   dz   }nd}t          j        |dz   |z   dz   |z   dz             S )Nz( {0,z})r   r   .z	\d{0,9}\.z	\d{0,9}\)*z\*+z\+-z {z,}r}   z,}\tz *\tz"(?:[ \t]*|[ \t]+[^\n]+)\n+(?:\1(?:rI   z)[^\n]+\n+)*)r   r   r   r   )r   r   prefixs1s2s        rb   _create_list_item_patternr  7  s:   CKK#f++5666>F
6{{Q #": 	+l*FFl*FFS= 	#e^FFs] 	#e^FFd]F	CKK!O$$	$t	+B
6{{Q CFa(((72:  			!#	$'	  rc   c                    g }|dv rt          j        d          }nd }t          ||          }	 |                    | |          }|sn|                    d          }|r|                    |          rnW|                    d          }	|	|k    r|	}t          ||          }|                    |           |                                }||fS )N>   r
  r  z' *((?:-[ \t]*){3,}|(?:\*[ \t]*){3,})\n+r   r   )r   r   r  matchrs   r   end)
r   r   r   r   r   is_hrr   rj   rx   
new_spacess
             rb   r   r   S  s    E 
6
 
 '77GMM&#&& 	wwqzz 	U[[&& 	WWQZZ
 	@F/??GTeegg  #:rc   )r   scannerr   r   inline_parserr   r   utilr   r   r  r   r  r   r  rt   r   r   _BLOCK_TAGSr   r   r   r   r   rK   r   rr   r  r  r   rh   rc   rb   <module>r     s   				 + + + + + + + + 2 2 2 2 2 2 2 2      RZ
##
rz'24((
"*Z
 
 bjrt444BJz666 BJz666 !rz'666 
 
 
 %%% )  M  2:i(( rz122y' y' y' y' y'- y' y' y'x  3 3 3" " "
  8    rc   