
    /Vh                        d Z ddlmZ ddlmZ ddlmZ ddlmc m	Z ddl
Z
ddlmZ dd	Z G d
 de      Z G d de      Zd Zy)z
Converts `[[WikiLinks]]` to relative links.

See the [documentation](https://Python-Markdown.github.io/extensions/wikilinks)
for details.
    )annotations   )	Extension   )InlineProcessorN)Anyc                V    t        j                  dd|       }dj                  |||      S )z1 Build a URL from the label, a base, and an end. z([ ]+_)|(_[ ]+)|([ ]+)_z{}{}{})resubformat)labelbaseendclean_labels       M/home/dcms/DCMS/lib/python3.12/site-packages/markdown/extensions/wikilinks.py	build_urlr      s(    &&2C?K??4c22    c                  (     e Zd ZdZ fdZd Z xZS )WikiLinkExtensionz# Add inline processor to Markdown. c                V    ddgddgddgt         dgd| _        	 t        |   di | y )	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    zWikiLinkExtension.__init__(   sE    EF>?%'HI#%GH	
 	/"6"r   c                    || _         d}t        || j                               }||_         |j                  j	                  |dd       y )Nz\[\[([\w0-9_ -]+)\]\]r   K   )mdWikiLinksInlineProcessor
getConfigsinlinePatternsregister)r!   r&   WIKILINK_REwikilinkPatterns       r   extendMarkdownz WikiLinkExtension.extendMarkdown2   sC     /2;@QR
""?JCr   )__name__
__module____qualname____doc__r    r-   __classcell__r#   s   @r   r   r   %   s    -#Dr   r   c                  4     e Zd ZdZd fdZddZddZ xZS )r'   z Build link from `wikilink`. c                2    t         |   |       || _        y )N)r   r    r   )r!   patternr   r#   s      r   r    z!WikiLinksInlineProcessor.__init__?   s    !r   c                   |j                  d      j                         r| j                         \  }}}|j                  d      j                         } | j                  d   |||      }t	        j
                  d      }||_        |j                  d|       |r|j                  d|       nd}||j                  d      |j                  d      fS )Nr   r   ahrefclass r   )
groupstrip_getMetar   etreeElementtextsetstartr   )	r!   mdatar   r   r   r   urlr8   s	            r   handleMatchz$WikiLinksInlineProcessor.handleMatchC   s    771:,0MMO)HgzGGAJ$$&E*$++k*5(GDCc"AAFEE&#gz*A!''!*aeeAh&&r   c                   | j                   d   }| j                   d   }| j                   d   }t        | j                  d      rd| j                  j                  v r| j                  j                  d   d   }d| j                  j                  v r| j                  j                  d   d   }d| j                  j                  v r| j                  j                  d   d   }|||fS )	z$ Return meta data or `config` data. r   r   r   Metawiki_base_urlr   wiki_end_urlwiki_html_class)r   hasattrr&   rI   )r!   r   r   r   s       r   r>   z!WikiLinksInlineProcessor._getMetaQ   s    ;;z*++i([[.
477F#$'',,.77<<8;-'',,~6q9 DGGLL0!WW\\*;<Q?
*,,r   )r6   strr   zdict[str, Any])rD   zre.Match[str]rE   rN   returnz$tuple[etree.Element | str, int, int])rO   ztuple[str, str, str])r.   r/   r0   r1   r    rG   r>   r2   r3   s   @r   r'   r'   <   s    ''-r   r'   c                     t        di | S )Nr   )r   )r"   s    r   makeExtensionrQ   `   s    &v&&r   )r   rN   r   rN   r   rN   rO   rN   )r1   
__future__r   r;   r   inlinepatternsr   xml.etree.ElementTreer?   ElementTreer   typingr   r   r   r'   rQ   r   r   r   <module>rW      sF    #  , % % 	 3D	 D.!- !-H'r   