
    -Be
                     r    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y)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                 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       =lib/python3.12/site-packages/markdown/extensions/wikilinks.py	build_urlr      s(    &&2C?K??4c22    c                   $     e Zd Z fdZd Z xZS )WikiLinkExtensionc                 T    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__    sB    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.extendMarkdown*   sC     /2;@QR
""?JCr   )__name__
__module____qualname__r   r+   __classcell__r!   s   @r   r   r      s    #Dr   r   c                   *     e Zd Z fdZd Zd Z xZS )r%   c                 2    t         |   |       || _        y )N)r   r   r   )r   patternr   r!   s      r   r   z!WikiLinksInlineProcessor.__init__5   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   urlr5   s	            r   handleMatchz$WikiLinksInlineProcessor.handleMatch9   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$   rF   )r   r   r   r   s       r   r;   z!WikiLinksInlineProcessor._getMetaG   s    ;;z*++i([[.
477F#$'',,.77<<8;-'',,~6q9 DGGLL0!WW\\*;<Q?
*,,r   )r,   r-   r.   r   rD   r;   r/   r0   s   @r   r%   r%   4   s    '-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D	 D,- -D'r   