
    h0@                        S SK r S SKJrJrJrJrJr  SSKJrJ	r	J
r
Jr  SSKJrJr  SSKJrJrJrJrJrJrJrJr  SSKJrJr  \ R6                  " S\ R8                  S	9r\ R6                  " S
5      r\ R6                  " S\ R8                  S	9r\ R6                  " S\ R8                  S	9r \ R6                  " S5      r!\ R6                  " S5      r"SSRG                  \5      -   S-   SRG                  \5      -   S-   r$\ R6                  " \S-   5      r%\ R6                  " S5      r&\ R6                  " S5      r' " S S\\   5      r(S\S\)S\*S\*4S jr+S\S\\)   S\*4S jr,g)    N)OptionalListTupleMatchPattern   )unikey
escape_url
expand_tabexpand_leading_tab)Parser
BlockState)
LINK_LABELHTML_TAGNAMEHTML_ATTRIBUTES
BLOCK_TAGSPRE_TAGSunescape_charparse_link_hrefparse_link_title)
parse_listLIST_PATTERNz^ {1,4})flagsz(\s+|^)#+\s*$z^ ?z^ *>z\n[ \t]*\n$z[ \t]*\n(|)z[ \t]*>[ \t]*(?:\n|$)z( {0,3}>[^\n]*(?:\n|$))+c                     ^  \ rS rSr\r\R                  " S\R                  5      r	S\
-   S-   rS\-   S-   rSSSS	S
SS\-   S-   S\\\S.rSr   S(S\\\      S\\\      S\4U 4S jjjrS\\   S\S\4S jrS\\   S\S\4S jrS\\   S\S\4S jrS\\   S\S\\   4S jrS\\   S\S\4S jrS\\   S\S\\   4S jrS\\   S\S\\   4S jrS\\   S\S\\\\   4   4S  jr S\\   S\S\4S! jr!S\\   S\S\4S" jr"S\\   S\S\\   4S# jr#S\\   S\S\\   4S$ jr$S)S\S%\\\      SS4S& jjr%S'r&U =r'$ )*BlockParser$   z(^[ \t\v\f]*\n)+z^ {0,3}(</?z|<!--|<\?|<![A-Z]|<!\[CDATA\[)z^ {0,3}(?:(?:</?z.(?:[ \t]+|\n|$))|<!--|<\?|<![A-Z]|<!\[CDATA\[)z:^ {0,3}(?P<atx_1>#{1,6})(?!#+)(?P<atx_2>[ \t]*|[ \t]+.*?)$z#^ {0,3}(?P<setext_1>=|-){1,}[ \t]*$zF^(?P<fenced_1> {0,3})(?P<fenced_2>`{3,}|~{3,})[ \t]*(?P<fenced_3>.*?)$zC^(?: {4}| *\t)[^\n]+(?:\n+|$)((?:(?: {4}| *\t)[^\n]+(?:\n+|$))|\s)*z:^ {0,3}((?:-[ \t]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})$z^ {0,3}\[(?P<reflink_1>z)\]:z^ {0,3}>(?P<quote_1>.*?)$)
blank_lineatx_headingsetex_headingfenced_codeindent_codethematic_breakref_linkblock_quotelist
block_htmlraw_html)
r#   r$   r!   r"   r%   r'   r(   r&   r*   r    Nblock_quote_rules
list_rulesmax_nested_levelc           	        > [         [        U ]  5         Uc  [        U R                  5      nUc  [        U R                  5      nXl        X l        X0l        U R                   Vs0 s H  oD[        U SU-   5      _M     snU l
        g s  snf )Nparse_)superr   __init__r(   DEFAULT_RULESr+   r,   r-   SPECIFICATIONgetattr_methods)selfr+   r,   r-   name	__class__s        gC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\mistune/block_parser.pyr1   BlockParser.__init__\   s     	k4)+$ $T%7%7 8d001J!2$ 0JNJ\J\]J\$wtX_==J\]]s   $Bmstatereturnc                 H    UR                  SS05        UR                  5       $ )zParse token for blank lines.typer    append_tokenendr6   r;   r<   s      r9   parse_blank_lineBlockParser.parse_blank_linep   s     FL12uuw    c                 N    UR                  SS05        UR                  5       S-   $ )z:Parse token for thematic break, e.g. ``<hr>`` tag in HTML.r?   r%   r   r@   rC   s      r9   parse_thematic_break BlockParser.parse_thematic_breaku   s&    F$456uuw{rF   c                    UR                  5       nU(       a  U$ UR                  S5      n[        U5      n[        R	                  SU5      nUR                  S5      nUR                  SUSS.5        UR                  5       $ )z9Parse token for code block which is indented by 4 spaces.r    

block_codeindent)r?   rawstyle)append_paragraphgroupr   _INDENT_CODE_TRIMsubstriprA   rB   )r6   r;   r<   end_poscodes        r9   parse_indent_codeBlockParser.parse_indent_code{   sq     ((*Nwwqz!$' $$R.zz$LQRuuwrF   c                 v   UR                  S5      nUR                  S5      nUR                  S5      nUS   nU(       a  US:X  a  UR                  U5      S:w  a  g[        R                  " SU-   S	-   [	        [        U5      5      -   S
-   [        R                  5      nUR                  5       S-   nUR                  UR                  U5      n	U	(       a-  UR                  XR                  5        n
U	R                  5       nOUR                  US n
UR                  nU(       aV  U
(       aO  [        R                  " S[	        [        U5      5      -   S-   [        R                  5      nUR                  SU
5      n
SU
SUS.nU(       a   [        U5      nSUR                  5       0US'   UR                  U5        U$ )zParse token for fenced code block. A fenced code block is started with
3 or more backtick(`) or tilde(~).

An example of a fenced code block:

.. code-block:: markdown

    ```python
    def markdown(text):
        return mistune.html(text)
    ```
fenced_1fenced_2fenced_3r   `Nz^ {0,3}{z,}[ \t]*(?:\n|$)r   z^ {0,}rK   rM   fenced)r?   rO   rP   markerinfoattrs)rR   findrecompilestrlenMrB   searchsrcstart
cursor_maxrT   r   rU   rA   )r6   r;   r<   spacesrc   rd   c_endcursor_startm2rW   rV   _trim_patterntokens                 r9   parse_fenced_codeBlockParser.parse_fenced_code   sj    $$wwz"1IAH yy|r!zz*q.3.S[1AADWWY[Y]Y]^uuw{[[L199\HHJ7DffhG99\]+D&&GdJJwS[1A'AC'GNM $$R.D%dXQWX &D$djjl3E'N5!rF   c                    [        UR                  S5      5      nUR                  S5      R                  5       nU(       a  [        R	                  SU5      nSUSU0SS.nUR                  U5        UR                  5       S-   $ )	zSParse token for ATX heading. An ATX heading is started with 1 to 6
symbol of ``#``.atx_1atx_2rK   headinglevelatx)r?   textre   rP   r   )rj   rR   rU   _ATX_HEADING_TRIMrT   rA   rB   )r6   r;   r<   r}   r   rv   s         r9   parse_atx_headingBlockParser.parse_atx_heading   su     AGGG$%www%%'$((T2D"DGU;KV[\5!uuw{rF   c                 `   UR                  5       nU(       aF  US   S:X  a=  UR                  S5      S:X  a  SOSnSUS'   SUS	'   S
U0US'   UR                  5       S-   $ U R                  SS/5      nUR	                  UR
                  UR                  5      nU(       a  U R                  Xb5      $ g)z}Parse token for setex style heading. A setex heading syntax looks like:

.. code-block:: markdown

    H1 title
    ========
r?   	paragraphsetext_1=r      r|   setextrP   r}   re   r%   r(   N)
last_tokenrR   rB   
compile_scmatchrm   cursorparse_method)r6   r;   r<   r   r}   scrt   s          r9   parse_setex_headingBlockParser.parse_setex_heading   s     %%'
*V,;,3AE!*Jv"*Jw#*E"2Jw557Q;__.78XXeii.$$R//rF   c                 b   UR                  5       nU(       a  U$ UR                  S5      n[        U5      nU(       d  g[        UR                  UR                  5       SS9u  pgUc  gUc   eU R                  R                  UR                  U5      nU(       a  UR                  5       n	OUR                  n	[        UR                  Xy5      u  pU(       a<  [        R                  UR                  U5      nU(       a  UR                  5       nOSnSn
Uc<  [        R                  UR                  U5      nU(       a  UR                  5       nOSnSnU=(       d    UnU(       d  gXRR                  S   ;  a:  Uc   e[        U5      n[        U5      US.nU
(       a  XS'   XR                  S   U'   U$ )a  Parse link references and save the link information into ``state.env``.

Here is an example of a link reference:

.. code-block:: markdown

    a [link][example]

    [example]: https://example.com "Optional title"

This method will save the link reference into ``state.env`` as::

    state.env['ref_links']['example'] = {
        'url': 'https://example.com',
        'title': "Optional title",
    }
	reflink_1NT)block	ref_links)urllabeltitle)rQ   rR   r	   r   rm   rB   
BLANK_LINErl   rn   ro   r   _BLANK_TO_LINEr   envr   r
   )r6   r;   r<   rV   r   keyhrefhref_pos_blankmax_posr   	title_posrt   m3datas                  r9   parse_ref_linkBlockParser.parse_ref_link   st   $ ((*N$Um(AEEG4H<###''		8<llnG&&G+EIIxI%%eii;BFFH	 	%%eii:B668'xii,,### &D%d+e<D %W*.IIk"3'rF   c                    UR                  S5      S-   n[        US5      n[        R                  SU5      nU R	                  / SQ5      n[        UR                  U5      5      nUR                  5       S-   Ul        SnU(       a  [        R                  UR                  UR                  5      nU(       ab  UR                  S5      n[        R                  SU5      n[        US5      n[        R                  SU5      nX8-  nUR                  5       Ul        GOS	n	U R	                  / S
Q5      n
UR                  UR                  :  Gam  [        R                  UR                  UR                  5      nU(       a  UR                  S5      n[        R                  SU5      n[        US5      n[        R                  SU5      nX8-  nUR                  5       Ul        UR                  5       (       d  Sn	O[        [        R                  U5      5      n	M  U	(       a  OU
R                  UR                  UR                  5      nU(       a  U R!                  X5      nU(       a  OTUR#                  5       nUR%                  U5      n[        US5      nX>-  nXl        UR                  UR                  :  a  GMm  ['        U5      U4$ )z6Extract text and cursor end position of a block quote.quote_1rL      rK   )r    r$   r#   r   Nr   F)r    r%   r#   r(   r)   T)rR   r   _BLOCK_QUOTE_TRIMrT   r   boolr   rB   r   _STRICT_BLOCK_QUOTErm   _BLOCK_QUOTE_LEADINGro   rU   _LINE_BLANK_ENDrl   r   find_line_endget_textr   )r6   r;   r<   r   r   require_markerrV   rt   quoteprev_blank_linebreak_scr   m4poslines                  r9   extract_block_quoteBlockParser.extract_block_quote   s7    wwy!D(!$* $$R.__IJbhhtn-uuw{!%$**599ellCB,00U;*5!4)--b%8!vvx#OH ,,!1!11(..uyy%,,GHHQKE044R?E.ua8E-11"e<EMD#%668EL ;;==*.*./E/Ee/L*M" ^^EIIu||<"//:G ))+~~c*)$2"A ,,!1!11H $((rF   c                    U R                  X5      u  p4UR                  U5      nUR                  5       U R                  S-
  :  a'  [	        U R
                  5      nUR                  S5        OU R
                  nU R                  XV5        SUR                  S.nU(       a  UR                  U5        U$ UR                  U5        UR                  $ )zParse token for block quote. Here is an example of the syntax:

.. code-block:: markdown

    > a block quote starts
    > with right arrows
r   r'   )r?   children)r   child_statedepthr-   r(   r+   removeparsetokensprepend_tokenrA   r   )r6   r;   r<   r   rV   childrulesrv   s           r9   parse_block_quoteBlockParser.parse_block_quoteh  s     00:!!$';;=D11A55//0ELL'**E

5 &ELLA&N5!||rF   c                     [        XU5      $ )z,Parse tokens for ordered and unordered list.)r   rC   s      r9   r   BlockParser.parse_list  s    $5))rF   c                 $    U R                  X5      $ N)parse_raw_htmlrC   s      r9   parse_block_htmlBlockParser.parse_block_html  s    ""1,,rF   c                    UR                  S5      R                  5       nUS:X  a  [        USUR                  5       5      $ US:X  a  [        USUR                  5       5      $ US:X  a  [        USUR                  5       5      $ UR	                  S5      (       a  [        US	UR                  5       5      $ S nS nUR	                  S
5      (       a3  USS  R                  5       nU[        ;   a  [        X R                  5      $ O^USS  R                  5       nU[        ;   a"  S
U-   S	-   n[        X&UR                  5       5      $ U[        ;   a  [        X R                  5      $ UR                  5       nU(       a  U$ UR                  5       nUR                  5       nU(       a%  [        R                  UR                  X5      (       d,  U(       a:  [        R                  UR                  X5      (       a  [        X R                  5      $ g )Nr   z<!--z-->z<?z?>z	<![CDATA[z]]>z<!>z</r   r   )rR   rU   _parse_html_to_endrB   
startswithlowerr   _parse_html_to_newliner   r   rQ   r   _OPEN_TAG_ENDr   rm   _CLOSE_TAG_END)	r6   r;   r<   rc   	close_tagopen_tagend_tagrV   	start_poss	            r9   r   BlockParser.parse_raw_html  s   !!# V%eUAEEG<< T>%eT1557;; [ %eUAEEG<< T""%eS!%%'::	T""qr
((*IJ&-e__EE ' abz'')H8#/C/)%!%%'BB:%-e__EE ((*N EEG	%%',,UYY	KK...uyy)MM)%AArF   r   c                    U R                  U5      nUR                  UR                  :  a  UR                  UR                  UR                  5      nU(       d  OUR                  5       nXQR                  :  a(  UR                  U5      nUR                  U5        XQl        U R                  XA5      nU(       a  Xql        O8UR                  5       nUR                  U5      nUR                  U5        Xl        UR                  UR                  :  a  M  UR                  UR                  :  a<  UR                  UR                  S  nUR                  U5        UR                  Ul        g g r   )
r   r   ro   rl   rm   rn   r   add_paragraphr   r   )	r6   r<   r   r   r;   rV   r   end_pos2end_pos3s	            r9   r   BlockParser.parse  s   __U#llU---		%))U\\2AggiG%~~g.##D)&((2H' ..0~~h/##D)'% llU---( <<%***99U\\^,D% ++EL +rF   )r5   r+   r,   r-   )NN   r   )(__name__
__module____qualname____firstlineno__r   	state_clsrg   rh   rk   r   r   RAW_HTML_BLOCK_TAGS_PATTERN
BLOCK_HTMLr   r   r3   r2   r   r   ri   intr1   r   rD   rH   rX   rw   r   r   r   r   r   r   r   r   r   r   __static_attributes____classcell__)r8   s   @r9   r   r   $   s   I/6J		!	 	'	(+	  *T?(6 X.;gE3 #M(M 26*. !	^#DI.^ T#Y'^ 	^ ^(%* Z C 
eCj   5: j S -5: -j -Xc] -^5: j S U3Z 
 xPS} ,Cc
 C: C(3- CJF)U3Z F)
 F)uSRZ[^R_M_G` F)P5: j S 2*E#J *z *c *-%* -Z -HSM -1c
 1: 1(3- 1f,: ,htCy.A ,T , ,rF   r   r<   
end_markerr   r=   c                 0   U R                   R                  X5      nUS:X  a&  U R                   U R                  S  nU R                  nO:U R	                  U5      nX0l        U R                  5       nX@R	                  U5      -  nU R                  SUS.5        U$ )Nr_   r)   r?   rO   )rm   rf   r   ro   r   r   rA   )r<   r   r   
marker_posr   rV   s         r9   r   r     s    
6JRyy(""~~j)!%%'w''	T:;NrF   newlinec                    UR                  U R                  U R                  5      nU(       a"  UR                  5       nU R	                  U5      nO%U R                  U R                  S  nU R
                  nU R                  SUS.5        U$ )Nr)   r   )rl   rm   r   rn   r   ro   rA   )r<   r   r;   rV   r   s        r9   r   r     sm    uyy%,,/A'')~~g&yy(""	T:;NrF   )-rg   typingr   r   r   r   r   utilr	   r
   r   r   corer   r   helpersr   r   r   r   r   r   r   r   list_parserr   r   rh   rk   rS   r   r   r   r   r   joinr   r   r   r   r   ri   r   r   r    rF   r9   <module>r      sN   	 8 8  %	 	 	 2JJz6 JJ/0 JJvRTT2 zz'6 **^,K(CHHZ0036(9KKcQ 

?-EEF45jj!<= q,&$ q,hj c c c 
* 
ws| 
 
rF   