Ë
    Ÿ2Úi ?  ã                  óæ   — 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Z dd
lmZmZ ddlmc mZ  G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de
«      Z G d„ de«      Zd„ Zy)zã
An implementation of [PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/)'s
parsing of Markdown syntax in raw HTML.

See the [documentation](https://Python-Markdown.github.io/extensions/raw_html)
for details.
é    )Úannotationsé   )Ú	Extensioné   )ÚBlockProcessor)ÚPreprocessor)ÚRawHtmlPostprocessor)Úutil)ÚHTMLExtractorÚblank_line_reNc                  ó„   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zd„ Zd„ Zˆ fd„Z	ˆ fd„Z
d	„ Zˆ fd
„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚHTMLExtractorExtrazƒ
    Override `HTMLExtractor` and create `etree` `Elements` for any elements which should have content parsed as
    Markdown.
    c                ó‚  •— t        |j                  j                  «       «      | _        t        g d¢«      | _        t        g d¢«      | _        t        ‰| �  |g|¢­i |¤Ž t        | j                  «      | j                  | j
                  z  | j                  z  z
  | _	        | j                  | j                  z  | _
        y )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       €úU/var/www/html/acx/venv/lib/python3.12/site-packages/markdown/extensions/md_in_html.pyr-   zHTMLExtractorExtra.__init__'   s›   ø€ ä # B×$;Ñ$;×$@Ñ$@Ó$BÓ CˆÔäÚsó
ˆŒô Ò^Ó_ˆŒä‰Ñ˜Ð-˜dÒ- fÒ-ô ˜d×3Ñ3Ó4¸¿¹ÈÏÉÑ8VÐY]×YhÑYhÑ8hÑiˆŒØ$(§O¡O°d·n±nÑ$DˆÕ!ó    c                óp   •— g | _         t        j                  «       | _        g | _        t
        ‰| �  «        y)z1Reset this instance.  Loses all unprocessed data.N)ÚmdstackÚetreeÚTreeBuilderÚtreebuilderÚmdstater,   Úreset©r1   r5   s    €r6   r>   zHTMLExtractorExtra.reset7   s+   ø€ àˆŒÜ ×,Ñ,Ó.ˆÔØˆŒÜ‰‰�r7   c                óx   •— t         ‰| �  «        | j                  r| j                  | j                  d   «       yy)zHandle any buffered data.r   N)r,   Úcloser9   Úhandle_endtagr?   s    €r6   rA   zHTMLExtractorExtra.close>   s.   ø€ ä‰‰Œà�<Š<à×Ñ˜tŸ|™|¨A™Õ/ð r7   c                ól   — | j                   j                  «       }t        j                  «       | _         |S )zJ Return element from `treebuilder` and reset `treebuilder` for later use. )r<   rA   r:   r;   )r1   Úelements     r6   Úget_elementzHTMLExtractorExtra.get_elementF   s,   € à×"Ñ"×(Ñ(Ó*ˆÜ ×,Ñ,Ó.ˆÔØˆr7   c                óL  — |j                  dd«      }|dk(  rd}| j                  r| j                  d   nd}|dk(  s
|dk(  r|dk7  r|}|dk(  r|| j                  v s|dk(  r|| j                  v ry|dk(  r|| j                  v s|dk(  r|| j                  v ry|| j
                  v ryy)	zS Return state from tag and `markdown` attribute. One of 'block', 'span', or 'off'. ÚmarkdownÚ0Ú1éÿÿÿÿNÚoffÚspanÚblock)Úgetr=   r/   r0   r*   r)   )r1   ÚtagÚattrsÚmd_attrÚparent_states        r6   Ú	get_statezHTMLExtractorExtra.get_stateL   s·   € à—)‘)˜J¨Ó,ˆØ�jÒ àˆGØ+/¯<ª<�t—|‘| BÒ'¸TˆØ˜5Ò  \°VÒ%;ÀÈ3Âà"ˆGØ˜Š^  t§¡Ñ 6Ø˜GÒ#¨¨t×/HÑ/HÑ(HØØ˜#Š~ #¨¯©Ñ"7Ø˜&Ò  S¨D×,EÑ,EÑ%EØØ�D×)Ñ)Ñ)Øàr7   c                ó  •— || j                   v rœ| j                  «       s| j                  r€|D ��ci c]  \  }}||�|n|“Œ }}}d|v r@|j                  d«       t	        j
                  ||«      }t	        j                  |dd¬«      }n| j                  «       }| j                  |d«       y || j                  v �r| j                  «       s| j                  rï|D ��ci c]  \  }}||�|n|“Œ }}}| j                  ||«      }| j                  s|dv r/| j                  s#|j                  dd «       t        ‰	| �9  ||«       y d| j                  v r|| j                  v r| j                  d«       | j                   j#                  |«       | j                  j#                  |«       ||d<   | j$                  j'                  ||«       y | j                  rt        ‰	| �9  ||«       y | j                  «       }| j                   rG| j                   d   d	k(  r5| j)                  | j*                  j,                  j/                  |«      «       n| j)                  |«       || j0                  v r| j3                  «        y y c c}}w c c}}w )
NrG   ÚunicodeÚhtml©ÚencodingÚmethodT)NrK   r   rJ   rK   )r.   Úat_line_startÚintailÚpopr:   ÚElementÚtostringÚget_starttag_textÚhandle_empty_tagr)   rS   Úinrawr9   r,   Úhandle_starttagrB   r=   Úappendr<   ÚstartÚhandle_datar2   Ú	htmlStashÚstoreÚCDATA_CONTENT_ELEMENTSÚclear_cdata_mode)
r1   rO   rP   ÚkeyÚvaluerD   ÚdataÚstateÚtextr5   s
            €r6   rb   z"HTMLExtractorExtra.handle_starttaga   s&  ø€ à�$—/‘/Ñ! t×'9Ñ'9Ô';¸t¿{º{ØPU×VÁ*À#Àu�S 5Ð#4™%¸#Ñ=ÐVˆEÑVØ˜UÑ"Ø—	‘	˜*Ô%ÜŸ-™-¨¨UÓ3�Ü—~‘~ g¸	È&ÔQ‘à×-Ñ-Ó/�Ø×!Ñ! $¨Ô-Øà�$×'Ñ'Ò'¨T×-?Ñ-?Ô-AÀTÇ[Â[ð QV×VÁ*À#Àu�S 5Ð#4™%¸#Ñ=ÐVˆEÑVØ—N‘N 3¨Ó.ˆEØ�zŠz˜e }Ñ4¸T¿\º\à—	‘	˜* dÔ+Ü‘Ñ'¨¨UÕ3à˜$Ÿ,™,Ñ&¨3°$×2GÑ2GÑ+Gà×&Ñ& sÔ+Ø—‘×#Ñ# EÔ*Ø—‘×#Ñ# CÔ(Ø$)��jÑ!Ø× Ñ ×&Ñ& s¨EÕ2ð �zŠzÜ‘Ñ'¨¨UÕ3à×-Ñ-Ó/�Ø—<’< D§L¡L°Ñ$4¸Ò$=Ø×$Ñ$ T§W¡W×%6Ñ%6×%<Ñ%<¸TÓ%BÕCà×$Ñ$ TÔ*Ø˜$×5Ñ5Ñ5à×)Ñ)Õ+ð 6ùóK Wùó Ws   ±I7ÃI=c           	     óÎ  •— || j                   v �rD| j                  rt        ‰| �  |«       y || j                  v �r¡| j                  rb| j                  j                  «       }| j                  j                  «        | j                  j                  |«       ||k(  rn| j                  rŒb| j                  �s�| j                  «       }| j                  r| j                  d   nd}|j                  d«      s,|j                  d«      r| j                  j                  d«       | j                  j                  | j                  j                  j                  |«      «       | j                  j                  d«       g | _        t#        j$                  | j&                  | j(                  | j*                  z   t-        | j/                  |«      «      z   d  «      s~d| _        y | j/                  |«      }| j                  rG| j                  d   dk(  r5| j3                  | j                  j                  j                  |«      «       y | j3                  |«       y y y | j                  rt        ‰| �  |«       y | j/                  |«      }| j                  rG| j                  d   dk(  r5| j3                  | j                  j                  j                  |«      «       y | j3                  |«       y )NrJ   Ú ú

ú
TrK   )r)   ra   r,   rB   r9   r\   r=   r<   ÚendrE   ÚcleandocÚendswithrc   r2   rf   rg   rm   r   ÚmatchÚrawdataÚline_offsetÚoffsetÚlenÚget_endtag_textr[   re   )r1   rO   ÚitemrD   rn   r5   s        €r6   rB   z HTMLExtractorExtra.handle_endtag�   s8  ø€ Ø�$×'Ñ'Ò'Ø�zŠzÜ‘Ñ% cÕ*Ø˜Ÿ™Ò$à—l’lØŸ<™<×+Ñ+Ó-�DØ—L‘L×$Ñ$Ô&Ø×$Ñ$×(Ñ(¨Ô.Ø˜s’{Øð —l“lð —|“|à"×.Ñ.Ó0�Gð 15·²˜4Ÿ=™=¨Ò,À2�DàŸ=™=¨Ô0°T·]±]À4Ô5HØŸ™×,Ñ,¨TÔ2Ø—M‘M×(Ñ(¨¯©×):Ñ):×)@Ñ)@ÀÓ)IÔJØ—M‘M×(Ñ(¨Ô0Ø!#�D”Jä(×.Ñ.Ø ŸL™L¨×)9Ñ)9¸D¿K¹KÑ)GÌ#Èd×NbÑNbÐcfÓNgÓJhÑ)hÐ)iÐjôlð '+˜�ð ×+Ñ+¨CÓ0�Ø—<’< D§L¡L°Ñ$4¸Ò$=Ø×$Ñ$ T§W¡W×%6Ñ%6×%<Ñ%<¸TÓ%BÕCà×$Ñ$ TÕ*ðlð $ð4 �zŠzÜ‘Ñ% cÕ*à×+Ñ+¨CÓ0�Ø—<’< D§L¡L°Ñ$4¸Ò$=Ø×$Ñ$ T§W¡W×%6Ñ%6×%<Ñ%<¸TÓ%BÕCà×$Ñ$ TÕ*r7   c                ó€  — || j                   v rn|D ��ci c]  \  }}||�|n|“Œ }}}d|v r@|j                  d«       t        j                  ||«      }t        j                  |dd¬«      }n!| j                  «       }n| j                  «       }| j                  || j                  j                  |«      ¬«       y c c}}w )NrG   rU   rV   rW   )Úis_block)	r.   r\   r:   r]   r^   r_   r`   r2   Úis_block_level)r1   rO   rP   rj   rk   rD   rl   s          r6   Úhandle_startendtagz%HTMLExtractorExtra.handle_startendtag¼   s«   € Ø�$—/‘/Ñ!ØPU×VÁ*À#Àu�S 5Ð#4™%¸#Ñ=ÐVˆEÑVØ˜UÑ"Ø—	‘	˜*Ô%ÜŸ-™-¨¨UÓ3�Ü—~‘~ g¸	È&ÔQ‘à×-Ñ-Ó/‘à×)Ñ)Ó+ˆDØ×Ñ˜d¨T¯W©W×-CÑ-CÀCÓ-HÐÕIùó Ws   ”B:c                óº   •— | j                   rd|v rd| _         | j                  s| j                  st        ‰| �  |«       y | j
                  j                  |«       y )Nrr   F)r[   ra   r9   r,   re   r<   rl   )r1   rl   r5   s     €r6   re   zHTMLExtractorExtra.handle_dataÉ   sE   ø€ Ø�;Š;˜4 4™<ØˆDŒKØ�:Š:˜TŸ\š\Ü‰GÑ Õ%à×Ñ×!Ñ! $Õ'r7   c                óZ  •— | j                   s| j                  st        ‰| �  ||«       y | j	                  «       r=|r;| j                  d| j                  j                  j                  |«      z   dz   «       y | j                  | j                  j                  j                  |«      «       y )Nrr   rq   )	ra   r9   r,   r`   rZ   re   r2   rf   rg   )r1   rl   r~   r5   s      €r6   r`   z#HTMLExtractorExtra.handle_empty_tagÑ   s}   ø€ Ø�:Š:˜TŸ\š\Ü‰GÑ$ T¨8Õ4à×!Ñ!Ô#©Ø× Ñ  ¨¯©×(9Ñ(9×(?Ñ(?ÀÓ(EÑ!EÈÑ!NÕOà× Ñ  §¡×!2Ñ!2×!8Ñ!8¸Ó!>Õ?r7   c                ó¦   •— | j                  «       s| j                  s| j                  rt        t        | �  |«      S | j                  d«       |dz   S )Nz<?r   )rZ   r[   r9   r,   r   Úparse_pire   ©r1   Úir5   s     €r6   r„   zHTMLExtractorExtra.parse_piÚ   sH   ø€ Ø×ÑÔ 4§;¢;°$·,²,ô œ¨Ñ6°qÓ9Ð9ð 	×Ñ˜ÔØ�1‰uˆr7   c                ó¦   •— | j                  «       s| j                  s| j                  rt        t        | �  |«      S | j                  d«       |dz   S )Nz<!r   )rZ   r[   r9   r,   r   Úparse_html_declarationre   r…   s     €r6   rˆ   z)HTMLExtractorExtra.parse_html_declarationä   sH   ø€ Ø×ÑÔ 4§;¢;°$·,²,ô œ¨ÑDÀQÓGÐGð 	×Ñ˜ÔØ�1‰uˆr7   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r-   r>   rA   rE   rS   rb   rB   r€   re   r`   r„   rˆ   Ú__classcell__)r5   s   @r6   r   r   !   sN   ø„ ñô
Eô ô0òòô**,ôX-+ò^Jô(ô@ô÷ð r7   r   c                  ó   — e Zd ZdZd„ Zy)ÚHtmlBlockPreprocessorzDRemove html blocks from the text and store them for later retrieval.c                óä   — dj                  |«      }t        | j                  «      }|j                  |«       |j	                  «        dj                  |j
                  «      j                  d«      S )Nrr   rp   )Újoinr   r2   ÚfeedrA   rt   Úsplit)r1   ÚlinesÚsourceÚparsers       r6   ÚrunzHtmlBlockPreprocessor.runò   sQ   € Ø—‘˜5Ó!ˆÜ# D§G¡GÓ,ˆØ�‰�FÔØ�‰ŒØ�w‰w�v—‘Ó'×-Ñ-¨dÓ3Ð3r7   N)r‰   rŠ   r‹   rŒ   r—   © r7   r6   r�   r�   ï   s
   „ ÙNó4r7   r�   c                  ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚMarkdownInHtmlProcessorzNProcess Markdown Inside HTML Blocks which have been stored in the `HtmlStash`.c                 ó   — y)NTr˜   )r1   ÚparentrM   s      r6   ÚtestzMarkdownInHtmlProcessor.testý   s   € àr7   c                ó  — |j                   j                  dd«      }|dk(  �r­t        |«      D ]  }| j                  |«       Œ g }t	        |«      D ]¥  \  }}|j
                  sŒ|j
                  j                  d«      }d|_        t        j                  d«      }| j                  j                  ||j                  d«      «       t        |«      }|j                  «        |j                  |dz   |f«       Œ§ |j                  «        |D ]  \  }}	|	D ]  }
|j                  ||
«       Œ Œ  |j                  r—|j                  j                  d«      }d|_        t        j                  d«      }| j                  j                  ||j                  d«      «       t        |«      }|j                  «        |D ]  }|j                  d	|«       Œ yy|d
k(  r"t        |«      D ]  }| j                  |«       Œ y|j                  €d|_        t!        j"                  |j                  «      |_        t        |«      D ]D  }| j                  |«       |j
                  sŒ!t!        j"                  |j
                  «      |_        ŒF y)až  
        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`.
        rG   rK   rM   rr   rp   Údivrq   r   r   rL   N)Úattribr\   ÚlistÚparse_element_contentÚ	enumerateÚtailÚrstripr:   r]   r–   ÚparseBlocksr“   Úreverserc   Úinsertrn   r
   ÚAtomicString)r1   rD   rQ   ÚchildÚtailsÚposrM   ÚdummyÚchildrenr¤   r|   s              r6   r¢   z-MarkdownInHtmlProcessor.parse_element_content  s0  € ð —.‘.×$Ñ$ Z°Ó7ˆà�gÓô ˜g›ò 2�Ø×*Ñ*¨5Õ1ð2ð
 ˆEÜ'¨Ó0ò 	6‘
��UØ—:“:Ø!ŸJ™J×-Ñ-¨dÓ3�EØ!#�E”Jä!ŸM™M¨%Ó0�EØ—K‘K×+Ñ+¨E°5·;±;¸vÓ3FÔGÜ# E›{�HØ×$Ñ$Ô&Ø—L‘L #¨¡'¨8Ð!4Õ5ð	6ð �M‰MŒOØ"ò .‘	��TØ ò .�DØ—N‘N 3¨Õ-ñ.ð.ð
 �|Š|ØŸ™×+Ñ+¨DÓ1�Ø!�”äŸ™ eÓ,�Ø—‘×'Ñ'¨¨u¯{©{¸6Ó/BÔCÜ ›;�Ø× Ñ Ô"Ø%ò -�EØ—N‘N 1 eÕ,ñ-ð ð ˜Òô ˜g›ò 2�Ø×*Ñ*¨5Õ1ñ2ð
 �|‰|Ð#Ø!�”Ü×,Ñ,¨W¯\©\Ó:ˆGŒLÜ˜g›ò ?�Ø×*Ñ*¨5Ô1Ø—:“:Ü!%×!2Ñ!2°5·:±:Ó!>�E•Jñ?r7   c                ó^  — t         j                  j                  |d   «      }|�rt        |j	                  d«      «      }| j
                  j                  j                  j                  |   }t        |t        j                  «      r§|j                  d«       | j                  |«       |j                  |«       | j
                  j                  j                  j                  j                  |«       | j
                  j                  j                  j                  j                  |d«       yy)Nr   r   rp   TF)r
   ÚHTML_PLACEHOLDER_RErv   ÚintÚgroupr–   r2   rf   ÚrawHtmlBlocksÚ
isinstancer:   r]   r\   r¢   rc   r¨   )r1   rœ   ÚblocksÚmÚindexrD   s         r6   r—   zMarkdownInHtmlProcessor.runG  sÍ   € Ü×$Ñ$×*Ñ*¨6°!©9Ó5ˆÚÜ˜Ÿ™ ›
“OˆEØ—k‘k—n‘n×.Ñ.×<Ñ<¸UÑCˆGÜ˜'¤5§=¡=Ô1à—
‘
˜1”Ø×*Ñ*¨7Ô3Ø—‘˜gÔ&à—‘—‘×(Ñ(×6Ñ6×:Ñ:¸5ÔAØ—‘—‘×(Ñ(×6Ñ6×=Ñ=¸eÀRÔHààr7   N)r‰   rŠ   r‹   rŒ   r�   r¢   r—   r˜   r7   r6   rš   rš   ú   s   „ ÙXòòD?óLr7   rš   c                  ó   — e Zd Zd„ Zy)ÚMarkdownInHTMLPostprocessorc                ó‚   — t        |t        j                  «      r| j                  j	                  |«      S t        |«      S )zE Override default to handle any `etree` elements still in the stash. )r´   r:   r]   r2   Ú
serializerÚstr)r1   rn   s     r6   Ústash_to_stringz+MarkdownInHTMLPostprocessor.stash_to_string[  s/   € ä�dœEŸM™MÔ*Ø—7‘7×%Ñ% dÓ+Ð+ä�t“9Ðr7   N)r‰   rŠ   r‹   r½   r˜   r7   r6   r¹   r¹   Z  s   „ ór7   r¹   c                  ó   — e Zd ZdZd„ Zy)ÚMarkdownInHtmlExtensionz/Add Markdown parsing in HTML to Markdown class.c                ó  — |j                   j                  t        |«      dd«       |j                  j                  j                  t        |j                  «      dd«       |j                  j                  t        |«      dd«       y)z Register extension instances. Ú
html_blocké   Úmarkdown_blockéi   Úraw_htmlé   N)ÚpreprocessorsÚregisterr�   r–   Úblockprocessorsrš   Úpostprocessorsr¹   )r1   r2   s     r6   ÚextendMarkdownz&MarkdownInHtmlExtension.extendMarkdownf  sl   € ð 	×Ñ×!Ñ!Ô"7¸Ó";¸\È2ÔNà
�	‰	×!Ñ!×*Ñ*Ü# B§I¡IÓ.Ð0@À#ô	
ð 	×Ñ×"Ñ"Ô#>¸rÓ#BÀJÐPRÕSr7   N)r‰   rŠ   r‹   rŒ   rË   r˜   r7   r6   r¿   r¿   c  s   „ Ù9ó
Tr7   r¿   c                 ó   — t        di | ¤ŽS )Nr˜   )r¿   )r4   s    r6   ÚmakeExtensionrÍ   s  s   € Ü"Ñ, VÑ,Ð,r7   )rŒ   Ú
__future__r   rp   r   rÉ   r   rÇ   r   rÊ   r	   r
   Ú
htmlparserr   r   Úxml.etree.ElementTreer:   ÚElementTreer   r�   rš   r¹   r¿   rÍ   r˜   r7   r6   ú<module>rÒ      sq   ðñõ #å Ý ,Ý (Ý 1Ý ß 5ß %Ð %ôK˜ô Kô\4˜Lô 4ô]˜nô ]ô@Ð"6ô ôT˜iô Tó -r7   