
    h                     @   S SK r S SKJrJr  \(       a  SSKJr  SSKJrJrJ	r	  SSK
Jr  SSKJr  S/r\ R                  " S	\ R                   5      r\ R                  " S
5      rSrSSS\\   SSS\4S jrSSS\\   SSS\4S jrSSS\S\4S jrSSS\S\4S jrSS jrg)    N)TYPE_CHECKINGMatch   )BlockParser)BaseRenderer
BlockStateInlineState)InlineParser)Markdownspoilerz
^ {0,3}! ?z^( {0,3}![^\n]*\n)+$z>!\s*(?P<spoiler_text>.+?)\s*!<blockr   mstater   returnc                 l   U R                  X5      u  p4UR                  S5      (       d  US-  nUR                  5       nU(       d3  [        R	                  U5      (       a  [
        R                  SU5      nSnOSnU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                  Xx5        XgR                  S.n	U(       a  UR                  U	5        U$ UR                  U	5        UR                   $ )N
 block_spoilerblock_quote   typechildren)extract_block_quoteendswithdepth_BLOCK_SPOILER_MATCHmatch_BLOCK_SPOILER_STARTsubchild_statemax_nested_levellistblock_quote_rulesremoveparsetokensprepend_tokenappend_tokencursor)
r   r   r   textend_posr   tok_typechildrulestokens
             jC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\mistune/plugins/spoiler.pyparse_block_spoilerr2      s   --a7MD== 	KKME)//55#''D1"  d#E{{}..22U,,-]#''	KK<<8EE"	u<<    inliner
   r	   c                     UR                  S5      nUR                  5       nX4l        U R                  U5      nUR	                  SUS.5        UR                  5       $ )Nspoiler_textinline_spoilerr   )groupcopysrcrenderr)   end)r4   r   r   r+   	new_stater   s         r1   parse_inline_spoilerr>   1   sM    77>"D

IM}}Y'H	 0hGH557Nr3   rendererr   r+   c                     SU-   S-   $ )Nz<div class="spoiler">
z</div>
 r?   r+   s     r1   render_block_spoilerrC   :   s    $t+j88r3   c                     SU-   S-   $ )Nz<span class="spoiler">z</span>rA   rB   s     r1   render_inline_spoilerrE   >   s    #d*Y66r3   c                 j   U R                   R                  SS[        5        U R                  R                  S[        [
        5        U R                  (       a\  U R                  R                  S:X  aA  U R                  R                  S[        5        U R                  R                  S[        5        ggg)a_  A mistune plugin to support block and inline spoiler. The
syntax is inspired by stackexchange:

.. code-block:: text

    Block level spoiler looks like block quote, but with `>!`:

    >! this is spoiler
    >!
    >! the content will be hidden

    Inline spoiler is surrounded by `>!` and `!<`, such as >! hide me !<.

:param md: Markdown instance
r   Nr7   htmlr   )
r   registerr2   r4   INLINE_SPOILER_PATTERNr>   r?   NAMErC   rE   )mds    r1   r   r   B   s~    " HHmT+>?II')?AUV	{{r{{''61
_.BC
-/DE 2{r3   )rK   r   r   N)retypingr   r   block_parserr   corer   r   r	   inline_parserr
   markdownr   __all__compileMr   r   rI   strintr2   r>   rC   rE   r   rA   r3   r1   <module>rW      s    	 '*<<,#+zz-6 zz"9: ; } s L UX > E#J } Y\ 9> 9 9 97N 7# 7# 7Fr3   