
    c71                         d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ defd	Zd
e
dededefdZd
edefdZd
edefdZd
e
fdZd Zd Zd Zd Zd Zd Zd Zd ZdS )    )ListOptional)
MarkdownIt)isSpace)parseLinkLabel)
StateBlock)StateInline)Tokenmdc                    | j         j                            ddt          dddgi           | j        j                            ddt                     | j        j                            ddt                     | j        j                            dd	t                     | 
                    dt                     | 
                    d
t                     | 
                    dt                     | 
                    dt                     | 
                    dt                     | 
                    dt                      | 
                    dt"                     | 
                    dt$                     dS )a  Plugin ported from
    `markdown-it-footnote <https://github.com/markdown-it/markdown-it-footnote>`__.

    It is based on the
    `pandoc definition <http://johnmacfarlane.net/pandoc/README.html#footnotes>`__:

    .. code-block:: md

        Normal footnote:

        Here is a footnote reference,[^1] and another.[^longnote]

        [^1]: Here is the footnote.

        [^longnote]: Here's one with multiple blocks.

            Subsequent paragraphs are indented to show that they
        belong to the previous footnote.

    	referencefootnote_defalt	paragraphimagefootnote_inlinefootnote_refinlinefootnote_tailfootnote_block_openfootnote_block_closefootnote_openfootnote_closefootnote_anchorfootnote_captionfootnote_anchor_nameN)blockrulerbeforer   r   afterr   r   corer   add_render_rulerender_footnote_refrender_footnote_block_openrender_footnote_block_closerender_footnote_openrender_footnote_closerender_footnote_anchorrender_footnote_captionrender_footnote_anchor_name)r   s    >lib/python3.11/site-packages/mdit_py_plugins/footnote/index.pyfootnote_pluginr,      sQ   * HN^\EK;U3V   IO'#4oFFFIO+^\JJJGM/=AAA~':;;;,.HIII-/JKKK(<===')>???(*@AAA )+BCCC-/JKKKKK    state	startLineendLinesilentc                 H   | j         |         | j        |         z   }| j        |         }|dz   |k    rdS | j        |         dk    rdS | j        |dz            dk    rdS |dz   }||k     r0| j        |         dk    rdS | j        |         dk    rn|dz  }||k     0||dz   k    rdS |dz  }|dz   |k    s| j        |         d	k    rdS |rd
S |dz  }| j        |dz   |dz
           }d| j                            di                               di           d|z   <   t          ddd          }d|i|_        | j	        |_	        | xj	        dz  c_	        | j
                            |           | j         |         }	| j        |         }
| j        |         }| j        }|}| j        |         |z   | j         |         | j        |         z   z
  x}}||k     r@| j        |         }t          |          r|dk    r|d|dz  z
  z  }n|dz  }nn|dz  }||k     @||z
  | j        |<   ||z
  | j        |<   || j         |<   | xj        dz  c_        d| _        | j        |         | j        k     r| j        |xx         | j        z  cc<   | j        j                            | ||d
           || _        | xj        dz  c_        |
| j        |<   || j        |<   |	| j         |<   || j        g|_        t          ddd          }| xj	        dz  c_	        | j	        |_	        | j
                            |           d
S )z!Process footnote block definition   F[      ^          ]   :   T	footnotesrefs:footnote_reference_open label	   footnotefootnote_reference_close)bMarkstShifteMarkssrcCharCodesrcenv
setdefaultr
   metaleveltokensappendsCount
parentTyper   	blkIndentr   r   tokenizelinemap)r.   r/   r0   r1   startmaximumposrA   
open_tokenoldBMark	oldTShift	oldSCountoldParentTypeposAfterColoninitialoffsetchtokens                     r+   r   r   9   s    L#el9&==El9%G qy7 u4' u#t+ u
!)C
- S!T) 	5S!T) 	q -  eai u1HC
Qw' U.s3t; u t1HCIeai#')*EPREIb))44VR@@uM0"a88J&JO{J	KK1KK	L
###|I&HY'IY'I$MMY
	<	"U\)%<<	>Gf - s#2;; 	Tz !fqj.(! q -  "M1EL$w.EL+EL	OOqOO!E|I0 3Y5?2	HNE9gt<<<$E	OOqOO'EL'EL&EL,JN,b"55E	KK1KK+EK	L4r-   c                 L   | j         }| j        }|dz   |k    rdS | j        |         dk    rdS | j        |dz            dk    rdS |dz   }t          | |dz             }|dk     rdS |s| j                            di                               di           }t          |          }g }| j        j        	                    | j
        ||         | j        | j        |           |                     d	d
d          }	d|i|	_        | j
        ||         |d||<   |dz   | _        || _         dS )z!Process inline footnotes (^[...])r7   Fr6   r5   r4   r   r<   listr   r@   id)contentrN   T)posMaxrX   rH   r   rJ   rK   lenr   r   parserI   pushrL   )
r.   r1   rW   rV   
labelStartlabelEndr=   
footnoteIdrN   rb   s
             r+   r   r      s_    lGIEqyG u4' u#t+ uJeUQY//H !| u
  Yy##K44??KKYY
 Ij)*EHei	
 	
 	
 

>2q11J'
',yH1D'EQWXXZ1EIEL4r-   c                 6   | j         }| j        }|dz   |k    rdS d| j        vsd| j        d         vrdS | j        |         dk    rdS | j        |dz            dk    rdS |dz   }||k     rC| j        |         d	k    rdS | j        |         d
k    rdS | j        |         dk    rn|dz  }||k     C||dz   k    rdS ||k    rdS |dz  }| j        |dz   |dz
           }d|z   | j        d         d         vrdS |sd| j        d         vri | j        d         d<   | j        d         d         d|z            dk     rSt          | j        d         d                   }|dd| j        d         d         |<   || j        d         d         d|z   <   n| j        d         d         d|z            }| j        d         d         |         d         }| j        d         d         |         dxx         dz  cc<   |                     ddd          }|||d|_        || _        || _         dS )z$Process footnote references ([^...])   Fr<   r=   r4   r5   r6   r7   r8   
   r9   r>   rd   r   )rA   countrq   r   r@   re   subIdrA   T)rg   rX   rJ   rH   rI   rh   rj   rL   )	r.   r1   rW   rV   rX   rA   rm   footnoteSubIdrb   s	            r+   r   r      s    lGIE qy7 u%)# vUY{5K'K u4' u#t+ u
!)C
- S!T) 	5S!T) 	5S!T) 	q -  eai u
g~ u1HCIeai#')*EeEIk26:: u P;// 	0-/EIk"6*9[!&)#+6: 	EUY{3F;<<JCHST9U9UEIk"6*:6:DEIk"6*3;77;/7eDJ	+.v6zB7K	+v&z27;;;q@;;;

>2q11&OO
EIEL4r-   c                     d}i }d| j         vrdS g }g }| j        D ]}|j        dk    r'd}g }|j        d         }|                    d           4|j        dk    r d}||d|z   <   |                    d           _|r|                    |           |                    |            d	 t          | j        |          D             | _        d
| j                             di           vrdS | j         d         d
         }	t          ddd          }
| j                            |
           |	                                D ]$\  }}t          ddd          }
||                    dd          d|
_        | j                            |
           d|v rg }t          ddd          }
d|
_	        |                    |
           t          ddd          }
|d         |
_
        |d         |
_        |                    |
           t          ddd          }
d|
_	        |                    |
           nd|v r|d|d         z            }| j                            |           | j        t          | j                  dz
           j        dk    r| j                                        }nd}d|v r|d         dk    r|d         nd}d}||k     rUt          ddd          }
|||                    dd          d|
_        | j                            |
           |dz  }||k     U|r| j                            |           t          ddd          }
| j                            |
           &t          ddd          }
| j                            |
           dS )zvPost-processing step, to move footnote tokens to end of the token stream.

    Also removes un-referenced tokens.
    Fr<   Nr?   TrA   rD   r>   c                     g | ]	\  }}||
S  rw   ).0tfs      r+   
<listcomp>z!footnote_tail.<locals>.<listcomp>   s!    EEE$!Q1EAEEEr-   rd   r   r@   r5   r   )re   rA   rN   paragraph_openpr   r   rf   paragraph_closer;   rq   r   rr   r   r   )rJ   rN   typerL   rO   zipgetr
   itemsr   childrenrf   extendrh   pop)r.   argskwargs	insideRef	refTokenscurrent
tok_filtertokcurrentLabel	foot_listrb   i	foot_noterN   lastParagraphry   js                    r+   r   r      s    II%)# GJ| + +800 	IG8G,Le$$$811 	I,3IcL()e$$$ 	 NN3y=****EE#elJ"?"?EEEELUY]];333 	+&v.I'Q//E	L!)) 0# 0#9or1--	gt(D(DEE
 	E"""y  	9F*C33EEKMM%   (B**E&x0EN%i0EMMM%   +S"55EEKMM%    	! 	9sYw%778FF###<EL))A-.37HH 	!-2\-=-=-?-?MM M I%,5g,>,BIg 	

 !e 	+R33E !A	gt8T8TUUEJL&&&FA	 !e 	  	/L...&B//E""""("b11E	Lr-   c                     t          ||         j        d         dz             }d}|                    dd           }t          |t                     rd| d}||z   S )Nre   r5   r@   docId-)strrL   r   
isinstance)selfrN   idxoptionsrJ   nprefixdoc_ids           r+   r*   r*   c  sa    F3KT"Q&''AFWWWd##F&# VA:r-   c                     t          ||         j        d         dz             }||         j                            dd          dk    r&|dt          ||         j        d                   z   z  }d|z   dz   S )	Nre   r5   rs   r;   r   r>   [])r   rL   r   )r   rN   r   r   rJ   r   s         r+   r)   r)   n  su    F3KT"Q&''Ac{GR((1, 2	S3vc{'011117S=r-   c                 (    | j         d         ||||          } | j         d         ||||          }|}||         j                            dd          dk    r&|dt          ||         j        d                   z   z  }d|z   dz   |z   d	z   |z   d
z   S )Nr   r   rs   r;   r   r>   z&<sup class="footnote-ref"><a href="#fnz" id="fnrefz">z
</a></sup>)rulesrL   r   r   )r   rN   r   r   rJ   identcaptionrefids           r+   r#   r#   w  s    .DJ-.vsGSIIE,dj+,VS'3GGGEc{GR((1, 6s6#;+G45555 	1
	
	 	 		
 	 	r-   c                 $    |j         rdnddz   dz   S )Nz<hr class="footnotes-sep" />
z<hr class="footnotes-sep">
z<section class="footnotes">
z<ol class="footnotes-list">
)xhtmlOutr   rN   r   r   rJ   s        r+   r$   r$     s/     0,,/
)	* *	*r-   c                     dS )Nz</ol>
</section>
rw   r   s        r+   r%   r%     s      r-   c                      | j         d         ||||          }||         j                            dd          dk    r|d||         j        d         z   z  }d|z   dz   S )Nr   rs   r;   r   r>   z
<li id="fnz" class="footnote-item">)r   rL   r   r   rN   r   r   rJ   r   s         r+   r&   r&     so    .DJ-.vsGSIIEc{GR((1, 1vc{'000%"<<<r-   c                     dS )Nz</li>
rw   r   s        r+   r'   r'     s    9r-   c                      | j         d         ||||          }||         j        d         dk    r&|dt          ||         j        d                   z   z  }d|z   dz   S )Nr   rs   r   r>   z <a href="#fnrefu%   " class="footnote-backref">↩︎</a>)r   rL   r   r   s         r+   r(   r(     sn    .DJ-.vsGSIIEc{ 1$ 6s6#;+G45555 %(UUUr-   N)typingr   r   markdown_itr   markdown_it.common.utilsr   markdown_it.helpersr   markdown_it.rules_blockr   markdown_it.rules_inliner	   markdown_it.tokenr
   r,   intboolr   r   r   r   r*   r)   r#   r$   r%   r&   r'   r(   rw   r-   r+   <module>r      s   " ! ! ! ! ! ! ! " " " " " " , , , , , , . . . . . . . . . . . . 0 0 0 0 0 0 # # # # # #%L
 %L %L %L %LV\
 \s \S \$ \ \ \ \~'; ' ' ' ' 'T8 8T 8 8 8 8v_ _ _ _ _L      &	 	 	! ! != = =  V V V V Vr-   