
    Mh                     (   d dl Z d dlmZmZ erddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZ dgZ e j        d	e j                  Z e j        d
          ZdZdddee         dddefdZdddee         dddefdZdddedefdZdddedefdZddZdS )     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                 ~   |                      ||          \  }}|                    d          s|dz  }|                                }|s8t                              |          rt
                              d|          }d}nd}|                    |          }|                                | j        dz
  k    r*t          | j
                  }|                    d           n| j
        }|                     ||           ||j        d}	|r|                    |	           |S |                    |	           |j        S )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
             W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mistune/plugins/spoiler.pyparse_block_spoilerr2      sC   --a77MD'==  	KKMME !)//55 !#''D11"  d##E{{}}.222U,--]####'	KKu5<88E E"""	u<    inliner
   r	   c                     |                     d          }|                                }||_        |                     |          }|                    d|d           |                                S )Nspoiler_textinline_spoilerr   )groupcopysrcrenderr)   end)r4   r   r   r+   	new_stater   s         r1   parse_inline_spoilerr>   1   sb    77>""D

IIM}}Y''H	 0hGGHHH5577Nr3   rendererr   r+   c                     d|z   dz   S )Nz<div class="spoiler">
z</div>
 r?   r+   s     r1   render_block_spoilerrC   :   s    $t+j88r3   c                     d|z   dz   S )Nz<span class="spoiler">z</span>rA   rB   s     r1   render_inline_spoilerrE   >   s    #d*Y66r3   mdr   c                 J   | j                             ddt                     | j                            dt          t
                     | j        rR| j        j        dk    rD| j                            dt                     | j                            dt                     dS dS dS )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   )rF   s    r1   r   r   B   s    " HmT+>???I')?AUVVV	{ Fr{'611
_.BCCC
-/DEEEEEF F11r3   )rF   r   r   N)retypingr   r   block_parserr   corer   r   r	   inline_parserr
   markdownr   __all__compileMr   r   rJ   strintr2   r>   rC   rE   r   rA   r3   r1   <module>rW      s   				 ' ' ' ' ' ' ' ' $******<<<<<<<<<<,,,,,,######+!rz-66 !rz"9:: ; } s L UX    > E#J } Y\    9> 9 9 9 9 9 97N 7# 7# 7 7 7 7F F F F F Fr3   