
    fP                        d dl Z ddlmZ ddlmZ ddlmZ dgZ e j                  d      Z	dez   d	z   Z
d
ez   dz   Zde j                  fdZde j                  defdZ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ededefdZd Zy)    N   )
BlockState)unikey)
LINK_LABEL	footnotesz\n{2,}z/^(?P<footnote_lead> {0,3})\[\^(?P<footnote_key>zU)]:[ \t](?P<footnote_text>[^\n]*(?:\n+|$)(?:(?P=footnote_lead) {1,3}(?! )[^\n]*\n+)*)z\[\^(?P<footnote_key>z)\]mc                    t        |j                  d            }|j                  j                  d      }|r||v r||j                  j                  d      }|sg }||vr |j	                  |       ||j                  d<   |j                  d|d|j                  |      dz   id       |j                         S |j                  d|j                  d	      d
       |j                         S )Nfootnote_keyref_footnotesr   footnote_refindex   )typerawattrstextr   )r   r   )r   groupenvgetappendappend_tokenr   end)inliner   statekeyrefnotess         T/var/www/cvtools/html/venv/lib/python3.12/site-packages/mistune/plugins/footnotes.pyparse_inline_footnoter      s    
(
)C
))--
(C
scz		k*EeLL%*EIIk" U[[-12
 	 557N 	F1771:>?557N    r   c                     |j                   j                  d      }|si }t        |j                  d            }||vr#|j                  d      ||<   ||j                   d<   |j	                         S )Nr   r
   footnote_text)r   r   r   r   r   )blockr   r   r   r   s        r   parse_ref_footnoter$   )   sa    
))--
(C
(
)C
#~77?+C%(		/"557Nr    r   r   c                    |j                   j                  d      }||   }|j                         }d }|dd  D ]  }|s n |rt        |      t        |j	                               z
  }t        j                  dt        |      z   dz   t
        j                        }	|	j                  d|      j                         }t        j                  |      }
|
D cg c]  }d|d	 }}n|j                         }d|dg}d	|||d
dS c c}w )Nr   r   z^ {z,})flags 	paragraph)r   r   footnote_item)r   r   )r   childrenr   )r   r   
splitlineslenlstriprecompilestrMsubstrip_PARAGRAPH_SPLITsplit)r#   r   r   r   r   r   linessecond_linespacespatternitemssr*   s                r   parse_footnote_itemr<   5   s   
))--
(Cs8DOOEKQRy  ;#k&8&8&:";;f

6CK/%7rttDg[[T"((*d$$T*e<ABq;2BhBZZ\d&56hu- 	 Cs   Dresultc           
         |j                   j                  d      }|s|S t        |      D cg c]   \  }}t        | j                  ||dz   |      " }}}t               }d|dg|_        | j                  |      }||z   S c c}}w )Nr   r   )r   r*   )r   r   	enumerater<   r#   r   tokensrender_state)mdr=   r   r   ikr*   outputs           r   md_footnotes_hookrF   O   s    IIMM+&E e$Aq 	BHHaQ6H  LE(h?@EL__U#FF?s   %Bc                 J    t        |      }d|z   dz   }|dz   |z   dz   |z   dz   S )Nz$<sup class="footnote-ref" id="fnref-">z<a href="#fn-z
</a></sup>)r0   )rendererr   r   rC   htmls        r   render_footnote_refrK   ^   s9    E
A1A5<D/!A%,q0<??r    r   c                     d|z   dz   S )Nz!<section class="footnotes">
<ol>
z</ol>
</section>
 )rI   r   s     r   render_footnotesrN   d   s    047:OOOr    c                 v    t        |      }d|z   dz   }|j                         d d |z   dz   }d|z   dz   |z   dz   S )Nz<a href="#fnref-z" class="footnote">&#8617;</a>z</p>z<li id="fn-rH   z</li>
)r0   rstrip)rI   r   r   r   rC   backs         r   render_footnote_itemrS   h   sQ    E
A!$DDD;;="$v-D1t#d*Y66r    c                    | j                   j                  dt        t        d       | j                  j                  dt
        t        d       | j                  j                  t               | j                  r{| j                  j                  dk(  ra| j                  j                  dt               | j                  j                  dt               | j                  j                  d	t               y
y
y
)a  A mistune plugin to support footnotes, spec defined at
    https://michelf.ca/projects/php-markdown/extra/#footnotes

    Here is an example:

    .. code-block:: text

        That's some text with a footnote.[^1]

        [^1]: And that's the footnote.

    It will be converted into HTML:

    .. code-block:: html

        <p>That's some text with a footnote.<sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup></p>
        <section class="footnotes">
        <ol>
        <li id="fn-1"><p>And that's the footnote.<a href="#fnref-1" class="footnote">&#8617;</a></p></li>
        </ol>
        </section>

    :param md: Markdown instance
    footnotelink)beforeref_footnoteref_linkrJ   r   r)   r   N)r   registerINLINE_FOOTNOTEr   r#   REF_FOOTNOTEr$   after_render_hooksr   rF   rI   NAMErK   rS   rN   )rB   s    r   r   r   o   s    2 II	   HH	     !23	{{r{{''61
^-@A
_.BC
[*:; 2{r    )r.   corer   utilr   helpersr   __all__r/   r4   r\   r[   Matchr   r$   r0   intr<   rF   rK   rN   rS   r   rM   r    r   <module>re      s    	    -2::i( '(+  +Z7&@RXX (	 	* 	C  J 4# j @s @3 @PS P7 73 7s 7*<r    