Ë
    Ÿ2ÚiJ  ã                  ó¦   — 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Zdd	lmc mZ  G d
„ de«      Z G d„ de«      Z G d„ de«      Zd„ Zy	)z¡
This extension adds abbreviation handling to Python-Markdown.

See the [documentation](https://Python-Markdown.github.io/extensions/abbreviations)
for details.
é    )Úannotationsé   )Ú	Extensioné   )ÚBlockProcessor)ÚInlineProcessor)ÚAtomicStringNc                  ó   — e Zd ZdZd„ Zy)ÚAbbrExtensionz- Abbreviation Extension for Python-Markdown. c                óx   — |j                   j                  j                  t        |j                   «      dd«       y)z; Insert `AbbrPreprocessor` before `ReferencePreprocessor`. Úabbré   N)ÚparserÚblockprocessorsÚregisterÚAbbrPreprocessor)ÚselfÚmds     úO/var/www/html/acx/venv/lib/python3.12/site-packages/markdown/extensions/abbr.pyÚextendMarkdownzAbbrExtension.extendMarkdown$   s)   € à
�	‰	×!Ñ!×*Ñ*Ô+;¸B¿I¹IÓ+FÈÐPRÕSó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r   !   s   „ Ù7óTr   r   c                  ó\   — e Zd ZdZ ej
                  dej                  «      Zd„ Zd„ Z	d„ Z
y)r   z= Abbreviation Preprocessor - parse text for abbr references. z6^[*]\[(?P<abbr>[^\]]*)\][ ]?:[ ]*\n?[ ]*(?P<title>.*)$c                 ó   — y)NTr   )r   ÚparentÚblocks      r   ÚtestzAbbrPreprocessor.test.   s   € Ør   c                óê  — |j                  d«      }| j                  j                  |«      }|�r2|j                  d«      j	                  «       }|j                  d«      j	                  «       }| j
                  j                  j                  j                  t        | j                  |«      |«      d|z  d«       ||j                  «       d j	                  «       r2|j                  d||j                  «       d j                  d«      «       |d|j                  «        j	                  «       r2|j                  d|d|j                  «        j                  d«      «       y|j                  d|«       y	)
zœ
        Find and remove all Abbreviation references from the text.
        Each reference is set as a new `AbbrPattern` in the markdown instance.

        r   r   Útitlezabbr-%sr   Nú
TF)ÚpopÚREÚsearchÚgroupÚstripr   r   ÚinlinePatternsr   ÚAbbrInlineProcessorÚ_generate_patternÚendÚinsertÚlstripÚstartÚrstrip)r   r   Úblocksr    Úmr   r#   s          r   ÚrunzAbbrPreprocessor.run1   s!  € ð —
‘
˜1“ˆØ�G‰G�N‰N˜5Ó!ˆÚØ—7‘7˜6“?×(Ñ(Ó*ˆDØ—G‘G˜GÓ$×*Ñ*Ó,ˆEØ�K‰K�N‰N×)Ñ)×2Ñ2Ü# D×$:Ñ$:¸4Ó$@À%ÓHÈ)ÐVZÑJZÐ\]ôð �Q—U‘U“W�Xˆ×$Ñ$Ô&à—‘˜a  q§u¡u£w x ×!7Ñ!7¸Ó!=Ô>Ø�Z�a—g‘g“iÐ ×&Ñ&Ô(à—‘˜a  z¨¯©«	Ð!2×!9Ñ!9¸$Ó!?Ô@Øà�‰�a˜ÔØr   c                óˆ   — t        |«      }t        t        |«      «      D ]  }d||   z  ||<   Œ ddj                  |«      z  S )zø
        Given a string, returns an regex pattern to match that string.

        'HTML' -> r'(?P<abbr>[H][T][M][L])'

        Note: we force each char as a literal match (in brackets) as we don't
        know what they will be beforehand.

        z[%s]z(?P<abbr>\b%s\b)Ú )ÚlistÚrangeÚlenÚjoin)r   ÚtextÚcharsÚis       r   r,   z"AbbrPreprocessor._generate_patternJ   sJ   € ô �T“
ˆÜ”s˜5“zÓ"ò 	*ˆAØ  q¡Ñ)ˆE�!ŠHð	*à" c§h¡h¨u£oÑ6Ð6r   N)r   r   r   r   ÚreÚcompileÚ	MULTILINEr&   r!   r4   r,   r   r   r   r   r   )   s+   „ ÙGà	ˆ�‰ÐMÈrÏ|É|Ó	\€Bòòó27r   r   c                  ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )r+   z Abbreviation inline pattern. c                ó2   •— t         ‰| �  |«       || _        y )N)ÚsuperÚ__init__r#   )r   Úpatternr#   Ú	__class__s      €r   rD   zAbbrInlineProcessor.__init__]   s   ø€ Ü‰Ñ˜Ô!Øˆ�
r   c                óè   — t        j                  d«      }t        |j                  d«      «      |_        |j                  d| j                  «       ||j                  d«      |j                  d«      fS )Nr   r#   r   )	ÚetreeÚElementr	   r(   r;   Úsetr#   r0   r-   )r   r3   Údatar   s       r   ÚhandleMatchzAbbrInlineProcessor.handleMatcha   sS   € Ü�}‰}˜VÓ$ˆÜ  §¡¨£Ó1ˆŒ	Ø�‰�˜$Ÿ*™*Ô%Ø�Q—W‘W˜Q“Z §¡ q£Ð)Ð)r   )r   r   r   r   rD   rL   Ú__classcell__)rF   s   @r   r+   r+   Z   s   ø„ Ù(ôö*r   r+   c                 ó   — t        di | ¤ŽS )Nr   )r   )Úkwargss    r   ÚmakeExtensionrP   h   s   € ÜÑ"˜6Ñ"Ð"r   )r   Ú
__future__r   r6   r   r   r   Úinlinepatternsr   Úutilr	   r>   Úxml.etree.ElementTreerH   ÚElementTreer   r   r+   rP   r   r   r   ú<module>rV      sP   ðñ õ #å Ý ,Ý ,Ý Û 	ß %Ð %ôT�Iô Tô.7�~ô .7ôb*˜/ô *ó#r   