
    ̆h                        S 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Jr  SS	 jr " S
 S\5      r " S S\5      rS rg)z
Converts `[[WikiLinks]]` to relative links.

See the [documentation](https://Python-Markdown.github.io/extensions/wikilinks)
for details.
    )annotations   )	Extension   )InlineProcessorN)Anyc                V    [         R                  " SSU 5      nSR                  XU5      $ )z0Build a URL from the label, a base, and an end. z([ ]+_)|(_[ ]+)|([ ]+)_z{}{}{})resubformat)labelbaseendclean_labels       U/opt/services/DDDS/venv/lib/python3.13/site-packages/markdown/extensions/wikilinks.py	build_urlr      s&    &&2C?K??4c22    c                  2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )WikiLinkExtension%   z"Add inline processor to Markdown. c                X   > SS/SS/SS/[         S/S.U l         [        TU ]  " S0 UD6  g )	N/z%String to append to beginning or URL.zString to append to end of URL.wikilinkzCSS hook. Leave blank for none.z Callable formats URL from label.)base_urlend_url
html_classr    )r   configsuper__init__)selfkwargs	__class__s     r   r!   WikiLinkExtension.__init__(   sE    EF>?%'HI#%GH	
 	/"6"r   c                    Xl         Sn[        X R                  5       5      nXl         UR                  R	                  USS5        g )Nz\[\[([\w0-9_ -]+)\]\]r   K   )mdWikiLinksInlineProcessor
getConfigsinlinePatternsregister)r"   r(   WIKILINK_REwikilinkPatterns       r   extendMarkdown WikiLinkExtension.extendMarkdown2   s=     /2;@QR
""?JCr   )r   r(   )	__name__
__module____qualname____firstlineno____doc__r!   r/   __static_attributes____classcell__r$   s   @r   r   r   %   s    -#D Dr   r   c                  D   ^  \ rS rSrSrSU 4S jjrSS jrS	S jrSrU =r	$ )
r)   <   zBuild link from `wikilink`. c                0   > [         TU ]  U5        X l        g )N)r    r!   r   )r"   patternr   r$   s      r   r!   !WikiLinksInlineProcessor.__init__?   s    !r   c                   UR                  S5      R                  5       (       a  U R                  5       u  p4nUR                  S5      R                  5       nU R                  S   " XcU5      n[        R
                  " S5      nXhl        UR                  SU5        U(       a  UR                  SU5        OSnXR                  S5      UR                  S5      4$ )Nr   r   ahrefclass r   )
groupstrip_getMetar   etreeElementtextsetstartr   )	r"   mdatar   r   r   r   urlr?   s	            r   handleMatch$WikiLinksInlineProcessor.handleMatchC   s    771:,0MMO)HzGGAJ$$&E++k*5GDCc"AFEE&#gz*A''!*aeeAh&&r   c                   U R                   S   nU R                   S   nU R                   S   n[        U R                  S5      (       a  SU R                  R                  ;   a  U R                  R                  S   S   nSU R                  R                  ;   a  U R                  R                  S   S   nSU R                  R                  ;   a  U R                  R                  S   S   nXU4$ )	z#Return meta data or `config` data. r   r   r   Metawiki_base_urlr   wiki_end_urlwiki_html_class)r   hasattrr(   rQ   )r"   r   r   r   s       r   rE   !WikiLinksInlineProcessor._getMetaQ   s    ;;z*++i([[.
477F##$'',,.77<<8;-'',,~6q9 DGGLL0!WW\\*;<Q?
*,,r   )r   )r<   strr   zdict[str, Any])rK   zre.Match[str]rL   rW   returnz$tuple[etree.Element | str, int, int])rX   ztuple[str, str, str])
r1   r2   r3   r4   r5   r!   rN   rE   r6   r7   r8   s   @r   r)   r)   <   s    ''- -r   r)   c                     [        S0 U D6$ )Nr   )r   )r#   s    r   makeExtensionrZ   `   s    &v&&r   )r   rW   r   rW   r   rW   rX   rW   )r5   
__future__r   rB   r   inlinepatternsr   xml.etree.ElementTreerF   ElementTreer   typingr   r   r   r)   rZ   r   r   r   <module>r`      sF    #  , % % 	 3D	 D.!- !-H'r   