
    $g@                     B   d 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c mZ ddlZddlZddlZ ej        d                    ej        d         ej        d	d
         dz  ej        d
                             Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z G d d          Zd Zd Zd Z G d de          Z G d de          Z G d de          Z G d de          Z dS )zGeneric blocks extension.    )	Extension)BlockProcessor)Treeprocessor)util   Nz^([\> ]*){}({}){}$   z([0-9]+)zC(?:^|\n)[ ]{0,3}(/{3,})[ ]*([\w-]+)[ ]*(?:\|[ ]*(.*?)[ ]*)?(?:\n|$)z'(?m)(?:^|\n)[ ]{0,3}(/{3,})[ ]*(?:\n|$)z(?m)^[ ]{0,3}(-{3})[ ]*(?:\n|$)z"(?m)^(?:[ ]{4,}(?!\s).*?(?:\n|$))+c                       e Zd ZdZd ZdS )
BlockEntryzTrack Block entries.c                 >    || _         || _        || _        d| _        dS )zBlock entry.FN)blockelparenthungry)selfr   r   r   s       X/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/pymdownx/blocks/__init__.py__init__zBlockEntry.__init__+   s$     
    N)__name__
__module____qualname____doc__r    r   r   r   r   (   s)            r   r   c                     d}	 t          j        |           }|i }t          |t                    sd}n# t          $ r Y nw xY w|S )zE
    Get frontmatter from string.

    YAML-ish key value pairs.
    N)yaml	safe_load
isinstancedict	Exception)stringfrontmatters     r   get_frontmatterr"   4   sh     KnV,,K+t,, 	K    s   /4 
A Ac                 ~    g }|                      d          D ]$}||z
  }|                    ||d                    %|S )z0Reindent the code to where it is supposed to be.
N)splitappend)textposlevelindentedlineindexs         r   reindentr-   I   sO     H

4   & &eUVV%%%%Or   c                 *   d}	 ddl m} | j        d         }t          ||          r|j        }n# t
          $ r Y nw xY wg }|D ]}g }|                    d          D ]}	t                              |	          }
|
rU|
	                    d          }t          |
	                    d                    }d}|`|j                            |d          \  }}|@t          |||          }|                    |           |j                            |           ||rt!          |                    d          d                   }|t          | j        j                  k     rX| j        j        |         }t          |t&          j                  rt'          j        |d	d
          }|                    |           ||                    |	           u|                    |	           |                    d                    |                     |S )zlLook for SuperFences code placeholders and other HTML stash placeholders and revert them back to plain text.Nr   )SuperFencesBlockPreprocessorfenced_code_blockr$   r   )NN:unicodehtml)encodingmethod)superfencesr/   preprocessorsr   	extensionr   r%   FENCED_BLOCK_REmatchgrouplenstashgetr-   extendremoveint	htmlStashrawHtmlBlocksetreeElementtostringr&   join)mdblocksis_rawr6   r/   	processor
new_blocksr   	new_linesr+   mkeyindent_leveloriginalr(   coder,   s                    r   unescape_markdownrS   S   s7    K>>>>>>$%89	i!=>> 	.#-K    J 0 0	KK%% 	' 	'D%%d++A 'ggajj  #1771::*$/$5$9$9#|$L$LMHc+'#|DD!((...#)00555 ##		#q 122Es2<#=>>>>#%<#=e#D%h>> c',~h[a'b'b'bH!((222 #$$T***  &&&&$))I..////s   */ 
<<c                   (     e Zd ZdZ fdZd Z xZS )BlocksTreeprocessorzBlocks tree processor.c                 X    t                                          |           || _        dS )zInitialize.N)superr   rI   )r   rH   rI   	__class__s      r   r   zBlocksTreeprocessor.__init__   s(     	r   c                     | j         j        rL| j         j                            d          }|j                            |j                   | j         j        JdS dS )zUpdate tab IDs.r   N)rI   inline_stackpopr   on_inline_endr   )r   docentrys      r   runzBlocksTreeprocessor.run   sd     k& 	0K,0033EK%%eh/// k& 	0 	0 	0 	0 	0r   )r   r   r   r   r   r_   __classcell__rX   s   @r   rU   rU      sM              0 0 0 0 0 0 0r   rU   c                   ^     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z xZS )BlocksProcessorzGeneric block processor.c                 X   || _         i | _        i | _        dh| _        t	          |j                                                  | _        | j                            d           h d| _	        h d| _
        t	          | j                  | j	        | j
        z  | j        z  z
  | _        | j        | j	        z  | _        t                                          |           i | _        g | _        g | _        d| _        d| _        d| _        t*          | _        t.          | _        t2          | _        dS )zInitialization.hrr3   >   pdddth1h2h3h4h5h6litdthlegendaddresssummary>   prerR   mathstylecanvasoptionscripttextareaN)rH   rI   config
empty_tagssetblock_level_elementscopyblock_level_tagsadd	span_tagsraw_tags
block_tagsspan_and_blocks_tagsrW   r   trackersstackrZ   workingcached_parentcached_blockRE_STARTstartRE_ENDendRE_INDENT_YAML_LINE	yaml_line)r   parserrH   rX   s      r   r   zBlocksProcessor.__init__   s     ' #B$;$@$@$B$B C C!!&)))
 
 
 cbbd3448VY]Yh8hi$(Odn$D!    
 "  
,r   c                     |j         | j        v rt          d|j          d          || j        |j         <   || j        |j         <   dS )zRegister a block.zThe block name z is already registered!N)NAMErI   
ValueErrorr|   )r   br|   s      r   registerzBlocksProcessor.register   sQ     6T[  NqvNNNOOOAF$AFr   c                    |                      |          dS | j                            |          }|rD|                                dk    r|d|                                         nd}|                    d                                          }|| j        v r | j        |         t          |                    d                    | j        |         | | j        |                   }||	                                d         }| 
                    ||j                  \  }}|                    d          }	|du}
|
r |j        ||	fi |}
|
r'||f| _        || j                            ||g           |
S dS )z+Test to see if we should process the block.NTr   r   r      F)
get_parentr   searchr;   lowerrI   r<   r   r|   r   split_headerlength	_validater   r   parseBlocks)r   r   r   rN   pre_textnamegeneric_blockoptionsthe_rest	argumentsstatuss              r   testzBlocksProcessor.test   s    ??6"".4 Je$$ 	,-GGIIMMuZaggiiZ((tH 771::##%%Dt{"" 1D 1#aggajj//4=QUCVX\^b^ijn^o p p aeegghh %)$5$5e]=Q$R$R!GGAJJ	 !,  S4]4VYRR'RRF  D)6(AD%  +//
CCCur   c                     | j                                          | j                                         d| _        d | j                                        D             | _        dS )Reset.Nc                     i | ]}|i S r   r   ).0ds     r   
<dictcomp>z*BlocksProcessor._reset.<locals>.<dictcomp>   s    ;;;1B;;;r   )r   clearrZ   r   rI   keysr   r   s    r   _resetzBlocksProcessor._reset   s[     	
!!!;;(8(8(:(:;;;r   c                    g }g }d}t          |          D ]\  }}d}| j                            |          D ],}	t          |	                    d                    |k    r|	} n-|r|d|                    d                   }
|
r4|                    |
                    d          r
|
dd         n|
           d}||                    d          d         }
|
r|                    |
           |                    ||dz   d                     n|                    |           |	                                 |                    |           ||fS )z;Search for end and split the blocks while removing the end.FNr   r   r$   r	   T)
	enumerater   finditerr<   r;   r   r&   endswithr?   r   )r   rI   r   goodbadr   er   rN   r:   temps              r   	split_endzBlocksProcessor.split_end   s|     "&)) 	# 	#HAu A**511  u{{1~~&&&00AE 1
  #[aggajj[) LKKT]]4-@-@ JSbS		dKKK QUU1XXYY' %JJt$$$

6!a%&&>*** E"""" 	c Syr   c                    d}g }| j                             |          D ],}t          |                    d                    |k    r|} n-|rP||                    d          d         }|                    d|           |d|                    d                   }| j                            |          }|t          j	        |                    d                    }|                    d||                                 d                    |
                                r$t          |          d                    |          fS |                    d|           i d                    |          fS )zSplit, YAML-ish header out.Nr   r   r$   )r   r   r<   r;   r   insertr   r:   textwrapdedentstripr"   rG   )r   r   r   rN   rI   r:   r   r|   s           r   r   zBlocksProcessor.split_header'  sY    X&&u-- 	 	E5;;q>>""f,, -
  	'

$CMM!S!!!+1771::+&EN  ''=_QWWQZZ00FMM!U1557788_---||~~ B&v..		&0A0AAAa499V$$$$r   c                     | j         | j         }d| _         |S |}|>| j        D ]}|j        r|j        |u r|| _         |c S ||                     |          }|>dS )zGet parent.N)r   r   r   r   	lastChild)r   r   r   r^   s       r   r   zBlocksProcessor.get_parentC  s     )'F!%DM    <  ELD$8$8)-D&KKK~~d++  tr   c                     |j         | j        v S )zIs tag raw.)tagr   r   r   s     r   rJ   zBlocksProcessor.is_rawV  s     w$-''r   c                     |j         | j        v S )zIs tag block.)r   r   r   s     r   is_blockzBlocksProcessor.is_block[  s     w$/))r   c                 Z   |D ]}|j                             |j                  }| dS |j                                         }|dvrd}|dk    p|dk    o|                     |          }|dk    p|dk    o|                     |          }|s|st          |          rt          |          d         nd}||j        n|j	        }	d
                    t          | j        |g|                    }|	r	|	d|z   z  }	n|}	||rt          j        |	          n|	|_        |rt          j        |	          n|	|_	        9| j        j                            d           | j        }
|| _        | j                            ||           | j        j                                         |
| _        dS )	zParse the blocks.N)r   inlinerawautor   r   r	   z

rI   )r   on_addr   on_markdownr   rJ   r<   listr'   tailrG   rS   rH   mutilAtomicStringr   stater~   r   
parseChunkreset)r   rI   r^   r   targetmoder   	is_atomicchildr'   r   s              r   parse_blockszBlocksProcessor.parse_blocks`  s   
  (	' (	'A[''11F ~;**,,D555wT46>+SdmmF>S>SHQ$&.*PT[[=P=PI  ' ',/KKAVR((T&+mv{{KK 1$'A3	 J JKK FQJ&DDD=>G"Q%"4T":":":TFKK
 >G!P!3D!9!9!9DEJJ !%%h///,$&&vq111!'')))&Q(	' (	'r   c                    |                      |          }||}| j        rh| j        \  }}d| _        |                    d           |r|                    d|           |:|j        dv r1|j        }|j        r#d|_        t          j        |d          }||_        |                    |          }| j	        
                    t          |||                     |                     ||j                  \  }	}
t          | j	                  dz
  }|                     |	| j	        d                    |
rD|                    |           | j        
                    | j	        |                    | j	        |= dS d| j	        |         _        dS t'          t          | j	                            D ]}| j	        |         }|j        r||j        u r|                     ||j        j                  \  }	}
d	|_        |                     |	|           |
rB|j                            |j                   | j        
                    |           | j	        |= nd|_         dS dS )
z!Convert to details/summary block.Nr   )ro   rg    rf   r   r	   TF)r   r   r[   r   r   r'   rD   
SubElement_creater   r&   r   r   r   r<   r   _endrZ   r   ranger   r   r   )r   r   rI   r   r   r   r'   rf   r   oursr   r,   rr^   s                 r   r_   zBlocksProcessor.run  st    v&&F  =	#'#4 M5 $D JJqMMM (a''' !fjL&@&@{; ""$FK(55A!AF &&v..B JjFCCDDD v}/CDDID# 
OOa'EdDJrN333  0""2&&&!((E):;;;Ju%%%+/
5!((( 3tz??++  
1< Fel$:$: $vu{7I J JID# $)EL%%dE222  ,((222)00777 JqMM'+EE' r   )r   r   r   r   r   r   r   r   r   r   r   rJ   r   r   r_   r`   ra   s   @r   rc   rc      s        ""(- (- (- (- (-T% % %) ) )V< < <' ' 'R% % %8  &( ( (
* * *
-' -' -'^F F F F F F Fr   rc   c                       e Zd ZdZd Zd ZdS )BlocksMgrExtensionzAdd generic Blocks extension.c                 >   |                     |            t          j        |dg           t          |j        |          | _        |j        j                            | j        dd           t          || j                  }|j	                            |dd           dS ) Add Blocks to Markdown instance./rI   g(\V@blocks_on_inline_endg=
ףp3@N)
registerExtensionr   escape_charsrc   r   r8   blockprocessorsr   rU   treeprocessors)r   rH   trees      r   extendMarkdownz!BlocksMgrExtension.extendMarkdown  s     	T""""se$$$(B77
	!**4>8UKKK"2t~66
""4)?GGGGGr   c                 8    | j                                          dS )r   N)r8   r   r   s    r   r   zBlocksMgrExtension.reset  s     	r   N)r   r   r   r   r   r   r   r   r   r   r     s;        ''
H 
H 
H         r   r   c                   $    e Zd ZdZd Zd Zd ZdS )BlocksExtensionzBlocks Extension.c                     d|j         j        vr+t                      }|                    |           |j        }n|j         j        d         }|S )r   rI   )r   r   r   r   r8   )r   rH   extmgrs       r   register_block_mgrz"BlocksExtension.register_block_mgr  sP     29444$&&Cr"""-CC)+H5C
r   c                 \    |                      |          }|                     ||           dS )zExtend markdown.N)r   extendMarkdownBlocks)r   rH   r   s      r   r   zBlocksExtension.extendMarkdown  s3     %%b))!!"c*****r   c                     dS )zExtend Markdown blocks.Nr   )r   rH   	block_mgrs      r   r   z$BlocksExtension.extendMarkdownBlocks  s      r   N)r   r   r   r   r   r   r   r   r   r   r   r     sG        	 	 	+ + +& & & & &r   r   )!r   markdownr   markdown.blockprocessorsr   markdown.treeprocessorsr   r   r   r   xml.etree.ElementTreerD   ElementTreerer   r   compileformatHTML_PLACEHOLDERr9   r   r   RE_YAML_STARTRE_YAML_ENDr   r   r"   r-   rS   rU   rc   r   r   r   r   r   <module>r     sm           3 3 3 3 3 3 1 1 1 1 1 1 " " " " " "       % % % % % % % % % 				   "*  q!qt${2r"   2:J  
.
 

 
=>>bj&  !bj!FGG 	 	 	 	 	 	 	 	  *  . . .b0 0 0 0 0- 0 0 0$    n   D
               *& & & & &i & & & & &r   