
    c
                         d Z ddlmZ ddlmZ ddlmc mZ ddlZd Z	 G d d	e          Z
 G d
 de          Zd ZdS )a  
WikiLinks Extension for Python-Markdown
======================================

Converts [[WikiLinks]] to relative links.

See <https://Python-Markdown.github.io/extensions/wikilinks>
for documentation.

Original code Copyright [Waylan Limberg](http://achinghead.com/).

All changes Copyright The Python Markdown Project

License: [BSD](https://opensource.org/licenses/bsd-license.php)

   )	Extension   )InlineProcessor    Nc                 \    t          j        dd|           }d                    |||          S )z1 Build a url from the label, a base, and an end. z([ ]+_)|(_[ ]+)|([ ]+)_z{}{}{})resubformat)labelbaseendclean_labels       =lib/python3.11/site-packages/markdown/extensions/wikilinks.py	build_urlr      s,    &2C??K??4c222    c                   $     e Zd Z fdZd Z xZS )WikiLinkExtensionc                 l    ddgddgddgt           dgd| _         t                      j        di | d S )	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__    sZ    EF>?%'HI#%GH	
 
 	""6"""""r   c                     || _         d}t          ||                                           }||_         |j                            |dd           d S )Nz\[\[([\w0-9_ -]+)\]\]r   K   )mdWikiLinksInlineProcessor
getConfigsinlinePatternsregister)r   r$   WIKILINK_REwikilinkPatterns       r   extendMarkdownz WikiLinkExtension.extendMarkdown*   sR     /2;@Q@QRR
""?JCCCCCr   )__name__
__module____qualname__r   r+   __classcell__r!   s   @r   r   r      sN        # # # # #D D D D D D Dr   r   c                   *     e Zd Z fdZd Zd Z xZS )r%   c                 X    t                                          |           || _        d S )N)r   r   r   )r   patternr   r!   s      r   r   z!WikiLinksInlineProcessor.__init__5   s&    !!!r   c                    |                     d                                          r|                                 \  }}}|                     d                                          } | j        d         |||          }t	          j        d          }||_        |                    d|           |r|                    d|           nd}||                    d          |	                    d          fS )Nr   r   ahrefclass r   )
groupstrip_getMetar   etreeElementtextsetstartr   )	r   mdatar   r   r   r   urlr5   s	            r   handleMatchz$WikiLinksInlineProcessor.handleMatch9   s    771:: 
	,0MMOO)HgzGGAJJ$$&&E*$+k*5(GDDCc""AAFEE&# +gz***A!''!**aeeAhh&&r   c                 h   | j         d         }| j         d         }| j         d         }t          | j        d          rrd| 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$   rF   )r   r   r   r   s       r   r;   z!WikiLinksInlineProcessor._getMetaG   s    ;z*+i([.
47F## 	@$',. <7<8;- :',~6q9 DGL0 @!W\*;<Q?
*,,r   )r,   r-   r.   r   rD   r;   r/   r0   s   @r   r%   r%   4   sV            ' ' '- - - - - - -r   r%   c                      t          di | S )Nr   )r   )r    s    r   makeExtensionrL   V   s    &&v&&&r   )__doc__r8   r   inlinepatternsr   xml.etree.ElementTreer<   ElementTreer	   r   r   r%   rL   r   r   r   <module>rQ      s    "       , , , , , , % % % % % % % % % 				3 3 3D D D D D	 D D D,- - - - - - - -D' ' ' ' 'r   