
    ͆hI                       S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SS	KJs  Jr  SS	KrSS	KrSS	KrSS
KJrJrJr  \(       a  SSKJr  \R6                  " SR9                  \R:                  S   \R:                  SS S-  \R:                  S   5      5      r\R6                  " S5      r\R6                  " S5      r \R6                  " S5      r!\R6                  " S5      r"\R6                  " S5      r# " S S5      r$S!S jr%S"S jr&S#S jr' " S S\	5      r( " S S\5      r) " S S\5      r* " S S \5      r+g	)$zGeneric blocks extension.    )annotations)	ExtensionMarkdown)BlockProcessor)Treeprocessor)BlockParser)util   N)castAnyTYPE_CHECKING   )Blockz^([\> ]*){}({}){}$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                  "    \ rS rSrSrSS jrSrg)
BlockEntry.   zTrack Block entries.c                6    Xl         X l        X0l        SU l        g)zBlock entry.FN)blockelparenthungry)selfr   r   r   s       P/opt/services/DDDS/venv/lib/python3.13/site-packages/pymdownx/blocks/__init__.py__init__BlockEntry.__init__1   s     $
!#%+!    )r   r   r   r   N)r   r   r   etree.Elementr   r   returnNone)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__ r   r   r   r   .   s
    "r   r   c                    Sn [         R                  " U 5      nUc  0 n[        U[        5      (       d  Sn[        SU5      $ ! [         a     Nf = f)z9
Get frontmatter from string.

YAML-ish key value pairs.
Ndict[str, Any])yaml	safe_load
isinstancedict	Exceptionr   )stringfrontmatters     r   get_frontmatterr1   :   s]     KnnV,K+t,,K  +..  s   2A 
AAc                h    / nU R                  S5       H  nX-
  nUR                  XES 5        M     U$ )z0Reindent the code to where it is supposed to be.
N)splitappend)textposlevelindentedlineindexs         r   reindentr<   O   s:     H

4 V% ! Or   c                   Sn SSK Jn  U R                  S   n[        XT5      (       a  UR                  n/ nU GH  n/ nUR                  S5       GH~  n	[        R                  U	5      n
U
(       GaL  U
R                  S5      n[        U
R                  S5      5      nSnUbY  UR                  R                  US5      u  pUb8  [        XU5      nUR                  U5        UR                  R                  U5        Uc  U(       a  [!        UR                  S5      S   5      nU[        U R"                  R$                  5      :  a_  U R"                  R$                  U   n[        U[&        R(                  5      (       a  [&        R*                  " US	S
S9nUR-                  U5        Uc  UR-                  U	5        GMj  GMm  UR-                  U	5        GM     UR-                  SR/                  U5      5        GM     U$ ! [
         a     GNf = f)zlLook for SuperFences code placeholders and other HTML stash placeholders and revert them back to plain text.Nr
   )SuperFencesBlockPreprocessorfenced_code_blockr3   r   )NN:unicodehtml)encodingmethod)superfencesr>   preprocessorsr,   	extensionr.   r4   FENCED_BLOCK_REmatchgrouplenstashgetr<   extendremoveint	htmlStashrawHtmlBlocksetreeElementtostringr5   join)mdblocksis_rawrE   r>   	processor
new_blocksr   	new_linesr:   mkeyindent_leveloriginalr7   coder;   s                    r   unescape_markdownrb   Y   s    K>$$%89	i>>#--K J	KK%D%%d+Aggaj  #1771:*$/$5$5$9$9#|$LMH+'|D!((.#))005 #		#q 12Es2<<#=#=>>#%<<#=#=e#D%h>>',~~h[a'bH!((2 #$$T* $   &9 &: 	$))I./? B K  s   1G: :
HHc                  :   ^  \ rS rSrSrSU 4S jjrSS jrSrU =r$ )BlocksTreeprocessor   zBlocks tree processor.c                0   > [         TU ]  U5        X l        g)zInitialize.N)superr   rX   )r   rW   rX   	__class__s      r   r   BlocksTreeprocessor.__init__   s     	r   c                
   U R                   R                  (       ah  U R                   R                  R                  S5      nUR                  R	                  UR
                  5        U R                   R                  (       a  Mg  gg)zUpdate tab IDs.r   N)rX   inline_stackpopr   on_inline_endr   )r   rootentrys      r   runBlocksTreeprocessor.run   sS     kk&&KK,,003EKK%%ehh/ kk&&&r   )rX   )rW   r   rX   BlocksProcessor)rn   r   r   r    )	r!   r"   r#   r$   r%   r   rp   r&   __classcell__rh   s   @r   rd   rd      s     0 0r   rd   c                     ^  \ rS rSrSrSU 4S jjrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSS jrSS jrSrU =r$ )rr      zGeneric block processor.c                Z  > X l         0 U l        0 U l        S1U l        [	        UR
                  R                  5       5      U l        U R                  R                  S5        1 SkU l	        1 SkU l
        [	        U R                  5      U R                  U R                  -  U R                  -  -
  U l        U R                  U R                  -  U l        [        TU ]9  U5        0 U l        / U l        / U l        SU l        SU l        SU l        [*        U l        [.        U l        [2        U l        g)zInitialization.hrrB   >   pdddth1h2h3h4h5h6litdthlegendaddresssummary>   prera   mathstylecanvasoptionscripttextareaN)rW   rX   config
empty_tagssetblock_level_elementscopyblock_level_tagsadd	span_tagsraw_tags
block_tagsspan_and_blocks_tagsrg   r   trackersstackrk   workingcached_parentcached_blockRE_STARTstartRE_ENDendRE_INDENT_YAML_LINE	yaml_line)r   parserrW   rh   s      r   r   BlocksProcessor.__init__   s      /113' #B$;$;$@$@$B C!!&)
 cd3348VY]YhYh8hi$(OOdnn$D!  46')
.0*. 488< 
,r   c                   / nUR                  S5      nU HY  nUR                  SU-  5      (       a  UR                  XRS 5        M1  UR                  5       (       d  UR                  S5        MY    O   U(       a.  SR	                  U5      SR	                  U[        U5      S 5      4$ SR	                  U[        U5      S 5      S4$ )z;Remove a tab from the front of each line of the given text.r3    N )r4   
startswithr5   striprV   rK   )r   r6   lengthnewtextlinesr:   s         r   detab_by_lengthBlocksProcessor.detab_by_length   s     

4 DsV|,,tG}-ZZ\\r"  99W%tyys7|}1E'FFFyys7|}-.22r   c                    UR                   U R                  ;   a  [        SUR                    S35      eXR                  UR                   '   X R                  UR                   '   g)zRegister a block.zThe block name z is already registered!N)NAMErX   
ValueErrorr   )r   br   s      r   registerBlocksProcessor.register   sM     66T[[ qvvh6MNOOAFF$AFFr   c                   U R                  U5      b  gU R                  R                  U5      nU(       Ga.  UR                  5       S:  a  USUR                  5        OSnUR                  S5      R	                  5       nXPR
                  ;   a  U R
                  U   " [        UR                  S5      5      U R                  U   X R                  U   5      nX#R                  5       S nU R                  X&R                  5      u  pxUR                  S5      n	USLn
U
(       a  UR                  " X40 UD6n
U
(       a'  Xh4U l        Ub  U R                  R                  X/5        U
$ g)z+Test to see if we should process the block.NTr   r
   r      F)
get_parentr   searchrJ   lowerrX   rK   r   r   r   split_headerr   	_validater   r   parseBlocks)r   r   r   r]   pre_textnamegeneric_blockoptionsthe_rest	argumentsstatuss              r   testBlocksProcessor.test   s>    ??6". JJe$,-GGIMuZaggi(tH 771:##%D{{" $D 1#aggaj/4==QUCVX\^i^ijn^o p eegh %)$5$5e=Q=Q$R!GGAJ	 !, *44VR'RF )6(AD%  +//
Cr   c                    U R                   R                  5         U R                  R                  5         SU l        U R                  R                  5        Vs0 s H  o0 _M     snU l        gs  snf zReset.N)r   clearrk   r   rX   keysr   )r   ds     r   _resetBlocksProcessor._reset  sW     	

!(,(8(8(:;(:1B(:;;s   A-c                b   SnSnSnSnU R                   R                  U5       H%  n[        UR                  S5      5      U:X  d  M#  Un  O   U(       aW  USUR	                  S5       nU(       a  UR                  S5      (       a  USS OUnSnXR                  S5      S nU(       a  UnOUnX4U4$ )z;Search for end and split the blocks while removing the end.NFr   r   r3   r   T)r   finditerrK   rJ   r   endswith)	r   r   r   goodbadr   r]   rI   temps	            r   	split_endBlocksProcessor.split_end  s      XX&&u-E5;;q>"f, . !''!*%D$(MM$$7$7tCRyTC q#D D #~r   c                   Sn/ nU R                   R                  U5       H%  n[        UR                  S5      5      U:X  d  M#  Un  O   U(       a9  XR	                  S5      S nUR                  SU5        USUR	                  S5       nU R                  R                  U5      nUbx  [        R                  " UR                  S5      5      nUR                  SXR                  5       S 5        UR                  5       (       a  [        U5      SR                  U5      4$ UR                  SU5        0 SR                  U5      4$ )zSplit, YAML-ish header out.Nr   r   r3   )r   r   rK   rJ   r   insertr   rI   textwrapdedentr   r1   rV   )r   r   r   r]   rX   rI   r   r   s           r   r   BlocksProcessor.split_header4  s
    XX&&u-E5;;q>"f, . 
$CMM!S!+1771:&ENN  '=__QWWQZ0FMM!U5578_-||~~&v.		&0AAAa499V$$$r   c                .   U R                   b  U R                   nSU l         U$ UnUbn  U R                  (       d   gU R                  S   R                  (       a$  U R                  S   R                  UL a  X l         U$ Ub  U R	                  U5      nUb  Mn  g)zGet parent.Nr   )r   r   r   r   	lastChild)r   r   r   s      r   r   BlocksProcessor.get_parentP  s     )''F!%DM%+::  zz"~$$B)>)>$)F%)"~~d+  r   c                4    UR                   U R                  ;   $ )zIs tag raw.)tagr   r   r   s     r   rY   BlocksProcessor.is_rawd  s     ww$--''r   c                4    UR                   U R                  ;   $ )zIs tag block.)r   r   r   s     r   is_blockBlocksProcessor.is_blocki  s     ww$//))r   c                   U(       Ga  U R                   (       Ga  UR                  S5      nU R                   S   nUR                  R                  UR                  5      nUR                  5        VVs0 s H  of  H  owU_M     M     nnn[        U R                   5      S:  a  U R                   S   R                  OSn	Sn
U	b-  UR                  U	S5      n	U	b  U	R                  S;   a  U
S-  n
M/   U R                  [        [        U5      XR                  -  5      u  p;U(       a  UR                  SU5        U R                  X4R                  R                  5      u  p<nUb  UR                  SU5        UGb  UGb  UR                  R!                  5       nUS;  a  SnUS:H  =(       d    US:H  =(       a    U R#                  U5      nUS	:H  =(       d    US:H  =(       a    U R%                  U5      nU(       d  U(       d  [        U5      (       a  ['        U5      S   OSnUc  UR(                  OUR*                  nS
R-                  [/        U R0                  U/U5      5      R3                  S5      nU(       a  UU(       d  UOS
U-   -  nOUnUc%  U(       a  [4        R6                  " U5      OUUl        OU(       a  [4        R6                  " U5      OUUl        O}U R8                  R:                  R=                  S5        U R>                  nX@l        U R8                  RA                  XS5        U R8                  R:                  RC                  5         UU l        U(       aM  UR                  RE                  UR                  5        U RF                  RI                  U5        U R                   S	 Uc  OU(       a  U R                   (       a  GM  U R                   (       a  SU R                   S   l%        ggs  snnf )zParse the blocks.r   r   r   Nr   rz   )r   inlinerawautor   r   z

r3   rX   T)&r   rl   r   on_addr   iterrK   rM   r   r   r   str
tab_lengthr   r   r   on_markdownr   rY   listr6   tailrV   rb   rW   r   mutilAtomicStringr   stater   r   
parseChunkreset_endrk   r5   r   )r   rX   current_parentr   ro   targetry   c
parent_mapr   r   ar   r   moder   	is_atomicchildr6   r   s                       r   parse_blocksBlocksProcessor.parse_blocksn  s    "JJqMA JJrNE[[''1F )7(;(;(=I(=1q!Q$q!(=JI*-djj/A*=TZZ^&&4FB$#5%zz\1a''S!b??6JKDAa# ..KK,>,>?KACa% }!3{{..099!D7?Xtv~/W$--PVBW EMUdfn.TVAT	 H03FDL,E*/-6;;UZZD$5dggsI$NOUUVZ[A
: }BKe&8&8&>QU
 BKU%7%7%=PT
 KK%%))(3"llG#(LKK**65KK%%++-#*DL   *!!((/JJrN ~_ b ::$(DJJrN! K Js   3O/c                   U R                  U5      nUb  UnU R                  (       a  U R                  u  pESU l        UR                  S5        U(       a  UR                  SU5        UbQ  UR                  S;   aA  UR
                  nUR
                  (       a$  SUl        [        R                  " US5      nXgl        UR                  U5      nU R                  R                  [        XHU5      5        U R                  X!5        g[        [        U R                  5      5       HM  n	U R                  U	   n
U
R                  (       d  M%  XR                   L d  M5  SU
l        U R                  X!5          g   g)z!Convert to details/summary block.Nr   r   r   ry   F)r   r   rl   r   r   r6   rS   
SubElement_creater   r5   r   r   rangerK   r   r   )r   r   rX   r   r   r   r6   ry   r   rro   s              r   rp   BlocksProcessor.run  s*    v&F #'#4#4 M $D JJqMa' !fjjL&@{{;;"$FK((5A!F &&v.B JJjFCD f- 3tzz?+

1<<<Fll$:#(EL%%f5 ,r   )r   r   rX   r   r   r   r   r   rk   rW   r   r   r   r   r   r   r   r   )r   r   rW   r   r   r    )r6   r   r   rP   r   ztuple[str, str])r   ztype[Block]r   r)   r   r    )r   r   r   r   r   boolr   r    )r   r   r   rP   r   z#tuple[str | None, str | None, bool])r   r   r   rP   r   z!tuple[dict[str, Any] | None, str])r   r   r   zetree.Element | None)r   r   r   r  )rX   	list[str]r   r   r   r    )r   r   rX   r
  r   r    )r!   r"   r#   r$   r%   r   r   r   r   r   r   r   r   rY   r   r   rp   r&   rs   rt   s   @r   rr   rr      sL    "(-T3 %)V<@%8((
*
V)p, ,r   rr   c                  ,    \ rS rSrSrSS jrSS jrSrg)	BlocksMgrExtensioni  zAdd generic Blocks extension.c                R   UR                  U 5        [        R                  " US/5        [        UR                  U5      U l        UR                  R                  R                  U R
                  SS5        [        XR
                  5      nUR                  R                  USS5        g) Add Blocks to Markdown instance./rX   g(\V@blocks_on_inline_endg=
ףp3@N)
registerExtensionr	   escape_charsrr   r   rG   blockprocessorsr   rd   treeprocessors)r   rW   trees      r   extendMarkdown!BlocksMgrExtension.extendMarkdown  s}     	T""se$(B7
		!!**4>>8UK"2~~6
""4)?Gr   c                8    U R                   R                  5         gr   )rG   r   )r   s    r   r   BlocksMgrExtension.reset  s     	r   )rG   NrW   r   r   r    r	  )r!   r"   r#   r$   r%   r  r   r&   r'   r   r   r  r    s    '
H r   r  c                  6    \ rS rSrSrSS jrS	S jrS
S jrSrg)BlocksExtensioni
  zBlocks Extension.c                    SUR                   R                  ;  a)  [        5       nUR                  U5        UR                  nU$ [        SUR                   R                  S   5      nU$ )r  rX   rr   )r   r  r  r  rG   r   )r   rW   extmgrs       r   register_block_mgr"BlocksExtension.register_block_mgr  s_     299444$&Cr"--C 
 ("))*C*CH*MNC
r   c                H    U R                  U5      nU R                  X5        g)zExtend markdown.N)r   extendMarkdownBlocks)r   rW   r  s      r   r  BlocksExtension.extendMarkdown  s"     %%b)!!"*r   c                    g)zExtend Markdown blocks.Nr'   )r   rW   	block_mgrs      r   r#  $BlocksExtension.extendMarkdownBlocks  s    r   r'   N)rW   r   r   rr   r  )rW   r   r&  rr   r   r    )	r!   r"   r#   r$   r%   r   r  r#  r&   r'   r   r   r  r  
  s    	+&r   r  )r/   r   r   zdict[str, Any] | None)r6   r   r7   rP   r8   rP   r   r
  )rW   r   rX   r
  rY   r  r   r
  ),r%   
__future__r   markdownr   r   markdown.blockprocessorsr   markdown.treeprocessorsr   markdown.blockparserr   r	   r   r   xml.etree.ElementTreerS   ElementTreerer*   r   typingr   r   r   r   r   compileformatHTML_PLACEHOLDERrH   r   r   RE_YAML_STARTRE_YAML_ENDr   r   r1   r<   rb   rd   rr   r  r  r'   r   r   <module>r6     s.    " ( 3 1 , "  % % 	   + + **  q!q${2r" ::J 
.

 

=>jj& jj!FG 	" 	"/*.b0- 0$Vn Vr
   *&i &r   