
    ̆hIM                       S 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r  SS
KJrJr  SSKJs  Jr  SSKJrJrJr  \(       a  SSKJr   " S S\5      r " S S\5      r " S S\5      r " S S\
5      r " S S\5      rS rg)z
Parse Markdown syntax within raw HTML.
Based on the implementation in [PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/).

See the [documentation](https://Python-Markdown.github.io/extensions/raw_html)
for details.
    )annotations   )	Extension   )BlockProcessor)Preprocessor)RawHtmlPostprocessor)util)HTMLExtractorblank_line_reN)TYPE_CHECKINGLiteralMapping)Markdownc                     ^  \ rS rSrSrSU 4S jjrU 4S jrU 4S jrSS jrSS jr	U 4S jr
U 4S	 jrS
 rU 4S jrU 4S jrSU 4S jjrSU 4S jjrSrU =r$ )HTMLExtractorExtra%   zw
Override `HTMLExtractor` and create `etree` `Elements` for any elements which should have content parsed as
Markdown.
c                  > [        UR                  R                  5       5      U l        [        / SQ5      U l        [        / SQ5      U l        [        TU ]  " U/UQ70 UD6  [        U R                  5      U R                  U R
                  -  U R                  -  -
  U l	        U R                  U R                  -  U l
        g )N)addressdddth1h2h3h4h5h6legendlipsummarytdth)canvasmathoptionprescriptstyletextarea)setblock_level_elementscopyblock_level_tags	span_tagsraw_tagssuper__init__
empty_tags
block_tagsspan_and_blocks_tags)selfmdargskwargs	__class__s       V/opt/services/DDDS/venv/lib/python3.13/site-packages/markdown/extensions/md_in_html.pyr2   HTMLExtractorExtra.__init__+   s     #B$;$;$@$@$B Cs
 ^_-d-f- d3348VY]YhYh8hi$(OOdnn$D!    c                   > / U l         [        R                  " 5       U l        / U l        / U l        [        TU ]  5         g)z1Reset this instance.  Loses all unprocessed data.N)mdstacketreeTreeBuildertreebuildermdstate	mdstartedr1   resetr6   r:   s    r;   rE   HTMLExtractorExtra.reset;   s2    "$ ,,.DF%'r=   c                   > [         TU ]  5         U R                  (       a  U R                  U R                  S   5        gg)zHandle any buffered data.r   N)r1   closer?   handle_endtagrF   s    r;   rI   HTMLExtractorExtra.closeC   s.    <<t||A/ r=   c                n    U R                   R                  5       n[        R                  " 5       U l         U$ )zIReturn element from `treebuilder` and reset `treebuilder` for later use. )rB   rI   r@   rA   )r6   elements     r;   get_elementHTMLExtractorExtra.get_elementK   s,    ""((* ,,.r=   c                p   UR                  SS5      nUS:X  a  SnU R                  (       a  U R                  S   OSnUS:X  d  US:X  a  US:w  a  UnUS:X  a  XR                  ;   d  US:X  a  XR                  ;   a  gUS:X  a  XR                  ;   d  US:X  a  XR                  ;   a  gXR
                  ;   a  gg)	zRReturn state from tag and `markdown` attribute. One of 'block', 'span', or 'off'. markdown01Noffspanblock)getrC   r4   r5   r/   r.   )r6   tagattrsmd_attrparent_states        r;   	get_stateHTMLExtractorExtra.get_stateQ   s    ))J,j G+/<<t||B'T5 \V%;3"G^ 6G#/H/H(H#~#"7& S,E,E%E)))r=   c                  > XR                   ;   a  U R                  5       (       d  U R                  (       a  U VVs0 s H  u  p4X4b  UOU_M     nnnSU;   a>  UR                  S5        [        R
                  " X5      n[        R                  " USSS9nOU R                  5       nU R                  US5        g XR                  ;   Gad  U R                  5       (       d8  U R                  (       d'  U R                  (       Ga,  U R                  S   (       Ga  U VVs0 s H  u  p4X4b  UOU_M     nnnU R                  X5      nU R                  (       d  US;   a3  U R                  (       d"  UR                  SS 5        [        T	U ]=  X5        g SU R                  ;   a   XR                  ;   a  U R!                  S5        U R"                  R%                  U5        U R                  R%                  U5        U R                  R%                  S5        XrS'   U R&                  R)                  X5        g U R                  (       a  [        T	U ]=  X5        g U R                  5       nU R"                  (       aH  U R"                  S   S	:X  a5  U R+                  U R,                  R.                  R1                  U5      5        OU R+                  U5        XR2                  ;   a  U R5                  5         g g s  snnf s  snnf )
NrQ   unicodehtmlencodingmethodTrT   )NrU   r    rU   )r3   at_line_startintailpopr@   Elementtostringget_starttag_texthandle_empty_tagr.   rD   r]   inrawr?   r1   handle_starttagrJ   rC   appendrB   starthandle_datar7   	htmlStashstoreCDATA_CONTENT_ELEMENTSclear_cdata_mode)
r6   rY   rZ   keyvaluerM   datastatetextr:   s
            r;   rm   "HTMLExtractorExtra.handle_starttagf   sB   //!t'9'9';';t{{PUVPU*#S#4%#=PUEVU"		*%--3~~g	&Q--/!!$- (((!!T[[DNNNt~~VXGYGY QVVPU*#S#4%#=PUEVNN3.Ezze}4T\\		*d+'3$,,&32G2G+G&&s+##E*##C(%%d+$)j!  &&s2 zz'3--/<<DLL$4$=$$TWW%6%6%<%<T%BC$$T*555))+ 6U W  Ws   K)K/c           	     	  > XR                   ;   GaF  U R                  (       a  [        TU ]  U5        g XR                  ;   Ga  U R                  (       a  U R                  R                  5       nU R                  R                  5         U R                  R                  5         U R                  R                  U5        X!:X  a  OU R                  (       a  M  U R                  (       Gd  U R                  5       nU R                  (       a  U R                  S   OSnUR                  S5      (       d1  UR                  S5      (       a  U R                  R                  S5        Un/ nUGb  [        U5       GH  nUR                  U5        UR                   b  UR                   OSnUR"                  b  UR"                  OSnS Ul        UR$                  R'                  SS5      n	US:w  a  SUR)                  S5      -   nUR                  S5      (       d  UR)                  S5      S-   nU	S;   aC  U U R*                  R,                  R/                  U5       U 3Ul        UR                  U5        M  UR$                  R                  S5        UR1                  5        V
s/ s H  oR$                  R                  SS 5      PM        n
U U R*                  R,                  R/                  U5       U 3Ul        GM     U(       a  UR                  S5      OS nUb  GM  U R                  R                  U R*                  R,                  R/                  U5      5        U R                  R                  S5        / U l        [4        R6                  " U R8                  U R:                  U R<                  -   [?        U RA                  U5      5      -   S  5      (       d  S	U l!        g g g U RA                  U5      nU R                  (       aH  U R                  S   S:X  a5  U RE                  U R*                  R,                  R/                  U5      5        g U RE                  U5        g U R                  (       a  [        TU ]  U5        g U RA                  U5      nU R                  (       aH  U R                  S   S:X  a5  U RE                  U R*                  R,                  R/                  U5      5        g U RE                  U5        g s  sn
f )
NrT    


rQ   rU   )rV   rW   r   T)#r.   rl   r1   rJ   r?   rg   rC   rD   rB   endrN   cleandocendswithrn   listremovery   tailattribrX   rstripr7   rq   rr   iterrx   r   matchrawdataline_offsetoffsetlenget_endtag_textrf   rp   )r6   rY   itemrM   currentlastchildry   r   rx   cr:   s              r;   rJ    HTMLExtractorExtra.handle_endtag   s   '''zz%c*$ll<<++-DLL$$&NN&&($$((.{ lll |||"..0G 154==,2D==00T]]45H5H,,T2 &GD!-%)']E#NN513:<<3K7<<QSD161G5::RD)-EJ$)LL$4$4Z$GE  $t|'+dkk$.?'? $(==#8#8'+{{4'86'A  %(99268I8I8O8OPU8V7WX\W]/^ $E 2 !& 0 0 <IN VAj$!? V268I8I8O8OPU8V7WX\W]/^5 &38 26$((1+4; "-> MM(():):)@)@)IJMM((0!#DJ(.. LL)9)9DKK)G#dNbNbcfNgJh)h)ijl l '+li $t ++C0<<DLL$4$=$$TWW%6%6%<%<T%BC$$T* zz%c*++C0<<DLL$4$=$$TWW%6%6%<%<T%BC$$T*; !Ws   %S5c                ~   XR                   ;   ap  U VVs0 s H  u  p4X4b  UOU_M     nnnSU;   a>  UR                  S5        [        R                  " X5      n[        R                  " USSS9nO!U R                  5       nOU R                  5       nU R                  X`R                  R                  U5      S9  g s  snnf )NrQ   r`   ra   rb   )is_block)	r3   rg   r@   rh   ri   rj   rk   r7   is_block_level)r6   rY   rZ   ru   rv   rM   rw   s          r;   handle_startendtag%HTMLExtractorExtra.handle_startendtag   s    //!PUVPU*#S#4%#=PUEVU"		*%--3~~g	&Q--/))+DdWW-C-CC-HI Ws   B9c                   > U R                   (       a  SU;   a  SU l         U R                  (       d  U R                  (       d  [        TU ]  U5        g SU R
                  S'   U R                  R                  U5        g )Nr~   FrT   )rf   rl   r?   r1   rp   rD   rB   rw   )r6   rw   r:   s     r;   rp   HTMLExtractorExtra.handle_data   sS    ;;44<DK::T\\G%!&DNN2!!$'r=   c                  > U R                   (       d  U R                  (       d  [        TU ]  X5        g U R	                  5       (       aB  U(       a;  U R                  SU R                  R                  R                  U5      -   S-   5        g U R                  (       aH  U R                  S   S:X  a5  U R                  U R                  R                  R                  U5      5        g U R                  U5        g )Nr~   r}   rT   rU   )
rl   r?   r1   rk   re   rp   r7   rq   rr   rC   )r6   rw   r   r:   s      r;   rk   #HTMLExtractorExtra.handle_empty_tag  s    ::T\\G$T4!!##  (9(9(?(?(E!E!NO$,,r"2e";  !2!2!8!8!>?  &r=   c                   > U R                  5       (       d"  U R                  (       d  U R                  (       a  [        [        U ]  U5      $ U R                  S5        US-   $ )Nz<?r   )re   rf   r?   r1   r   parse_pirp   )r6   ir:   s     r;   r   HTMLExtractorExtra.parse_pi  sK    4;;$,, 6q99 	1ur=   c                  > U R                  5       (       d"  U R                  (       d  U R                  (       a{  U R                  XS-    S:X  aS  U R                  XS-    S:X  d>  U R	                  U5      nUS:X  a%  U R                  U R                  XS-    5        US-   $ U$ [        [        U ]#  U5      $ U R                  S5        US-   $ )	N   z<![	   z	<![CDATA[rT   r   z<!r   )	re   rf   r?   r   parse_bogus_commentrp   r1   r   parse_html_declaration)r6   r   resultr:   s      r;   r   )HTMLExtractorExtra.parse_html_declaration  s    4;;$,,||Ac"e+DLLQ34G;4V 11!4R<$$T\\!E%:;q5L DQGG 	1ur=   )r.   r4   rf   r?   rD   rC   r0   r5   r/   rx   rB   )r7   r   )returnetree.Element)rZ   zMapping[str, str]r   z%Literal['block', 'span', 'off', None])r   intr   r   )__name__
__module____qualname____firstlineno____doc__r2   rE   rI   rN   r]   rm   rJ   r   rp   rk   r   r   __static_attributes____classcell__)r:   s   @r;   r   r   %   sN    
E 0*/,bU+nJ(	' r=   r   c                  "    \ rS rSrSrSS jrSrg)HtmlBlockPreprocessori,  zDRemove html blocks from the text and store them for later retrieval.c                    SR                  U5      n[        U R                  5      nUR                  U5        UR	                  5         SR                  UR
                  5      R                  S5      $ )Nr~   r|   )joinr   r7   feedrI   r   split)r6   linessourceparsers       r;   runHtmlBlockPreprocessor.run/  sQ    5!#DGG,Fwwv'--d33r=    N)r   	list[str]r   r   )r   r   r   r   r   r   r   r   r=   r;   r   r   ,  s
    N4r=   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)MarkdownInHtmlProcessori7  zNProcess Markdown Inside HTML Blocks which have been stored in the `HtmlStash`.c                    g)NTr   )r6   parentrW   s      r;   testMarkdownInHtmlProcessor.test:  s    r=   c                N   UR                   R                  SS5      nUS:X  a_  UR                  (       aM  UR                  R                  S5      nSUl        U R                  R                  XR                  S5      5        ggUS:X  Ga	  UR                  b  UR                  OSnSUl        SnS	n[        R                  R                  U5       GH  n[        UR                  S
5      5      nU R                  R                  R                  R                  U   nUR                  5       n	[!        U["        R$                  5      (       a  Uc  U=R                  X5U	 -  sl        OU=R&                  X5U	 -  sl        UR)                  U5        U R+                  U5        UnUR&                  c  SUl        U R                  R                  R                  R                  R                  U5        U R                  R                  R                  R                  R-                  US5        O2Uc  U=R                  X5U	 -  sl        OU=R&                  X5U	 -  sl        U	nGM     Uc  U=R                  X5S -  sl        gU=R&                  X5S -  sl        gUR                  c  SUl        [        R.                  " UR                  5      Ul        [1        U5       HL  nU R+                  U5        UR&                  (       d  M'  [        R.                  " UR&                  5      Ul        MN     g)av  
Recursively parse the text content of an `etree` Element as Markdown.

Any block level elements generated from the Markdown will be inserted as children of the element in place
of the text content. All `markdown` attributes are removed. For any elements in which Markdown parsing has
been disabled, the text content of it and its children are wrapped in an `AtomicString`.
rQ   rU   rW   r~   r|   r}   rV   Nr   r   )r   rg   ry   r   r   parseBlocksr   r
   HTML_PLACEHOLDER_REfinditerr   groupr7   rq   rawHtmlBlocksro   
isinstancer@   rh   r   rn   parse_element_contentinsertAtomicStringr   )
r6   rM   r[   rW   r   ro   mindexelr   s
             r;   r   -MarkdownInHtmlProcessor.parse_element_content>  sa    ..$$Z7g||++D1!''V1DE 
 
 %,LL$<GLL"EGLEE --66u=AGGAJ[[^^--;;EBggib%--00 }C(88

e#&66
NN2&..r2Ezz)%'
KKNN,,::>>uEKKNN,,::AA%L }C(88

e#&66
5 >: }f-

eFm+
 ||#!,,W\\:GLg**51:::!%!2!25::!>EJ 'r=   c                   [         R                  R                  US   5      nU(       Ga9  [        UR	                  S5      5      nU R
                  R                  R                  R                  U   n[        U[        R                  5      (       a  UR                  S5      nUR                  U5        U R                  U5        U R
                  R                  R                  R                  R                  U5        U R
                  R                  R                  R                  R                  US5        XcR!                  S5      S  nU(       a  UR                  SU5        gg)Nr   r   r|   TF)r
   r   r   r   r   r   r7   rq   r   r   r@   rh   rg   rn   r   r   r   )r6   r   blocksr   r   rM   rW   contents           r;   r   MarkdownInHtmlProcessor.run  s    $$**6!95
OEkknn..<<UCG'5==11

1g&**73((66::5A((66==eRHa	*MM!W-r=   r   N)r   r   rW   strr   bool)rM   r   r   None)r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r   r=   r;   r   r   7  s    XG?Rr=   r   c                      \ rS rSrSS jrSrg)MarkdownInHTMLPostprocessori  c                    [        U[        R                  5      (       a  U R                  R	                  U5      $ [        U5      $ )zDOverride default to handle any `etree` elements still in the stash. )r   r@   rh   r7   
serializerr   )r6   ry   s     r;   stash_to_string+MarkdownInHTMLPostprocessor.stash_to_string  s2    dEMM**77%%d++t9r=   r   N)ry   zstr | etree.Elementr   r   )r   r   r   r   r   r   r   r=   r;   r   r     s    r=   r   c                      \ rS rSrSrS rSrg)MarkdownInHtmlExtensioni  z/Add Markdown parsing in HTML to Markdown class.c                   UR                   R                  [        U5      SS5        UR                  R                  R                  [        UR                  5      SS5        UR                  R                  [        U5      SS5        g)zRegister extension instances. 
html_block   markdown_blocki   raw_html   N)preprocessorsregisterr   r   blockprocessorsr   postprocessorsr   )r6   r7   s     r;   extendMarkdown&MarkdownInHtmlExtension.extendMarkdown  sl     	!!"7";\2N
		!!**#BII.0@#	
 	""#>r#BJPRSr=   r   N)r   r   r   r   r   r   r   r   r=   r;   r   r     s    9
Tr=   r   c                     [        S0 U D6$ )Nr   )r   )r9   s    r;   makeExtensionr     s    ",V,,r=   )r   
__future__r   r|   r   r   r   r   r   r   r	   r
   
htmlparserr   r   xml.etree.ElementTreer@   ElementTreetypingr   r   r   rQ   r   r   r   r   r   r   r   r   r=   r;   <module>r      s}    #  , ( 1  5 % % 2 2!D DN4L 4dn dN"6 Ti T -r=   