
    $g                        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dS )z
Converts `[[WikiLinks]]` to relative links.

See the [documentation](https://Python-Markdown.github.io/extensions/wikilinks)
for details.
    )annotations   )	Extension   )InlineProcessorN)Anylabelstrbaseendreturnc                \    t          j        dd|           }d                    |||          S )z1 Build a URL from the label, a base, and an end. z([ ]+_)|(_[ ]+)|([ ]+)_z{}{}{})resubformat)r	   r   r   clean_labels       ]/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/markdown/extensions/wikilinks.py	build_urlr      s,    &2C??K??4c222    c                  (     e Zd ZdZ fdZd Z xZS )WikiLinkExtensionz# Add inline processor to Markdown. c                n    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__(   s]    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.extendMarkdown2   sR     /2;@Q@QRR
""?JCCCCCr   )__name__
__module____qualname____doc__r"   r/   __classcell__r%   s   @r   r   r   %   sT        --# # # # #D D D D D D 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`. patternr
   r    dict[str, Any]c                X    t                                          |           || _        d S )N)r!   r"   r    )r#   r7   r    r%   s      r   r"   z!WikiLinksInlineProcessor.__init__?   s&    !!!r   mre.Match[str]datar   $tuple[etree.Element | str, int, int]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#   r:   r<   r   r   r   r	   urlr?   s	            r   handleMatchz$WikiLinksInlineProcessor.handleMatchC   s    771:: 
	,0MMOO)HgzGGAJJ$$&&E*$+k*5(GDDCc""AAFEE&# +gz***A!''!**aeeAhh&&r   tuple[str, str, str]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(   rO   )r#   r   r   r   s       r   rE   z!WikiLinksInlineProcessor._getMetaQ   s    ;z*+i([.
47F## 	@$',..7<8;--',~6q9 DGL00!W\*;<Q?
*,,r   )r7   r
   r    r8   )r:   r;   r<   r
   r   r=   )r   rM   )r0   r1   r2   r3   r"   rL   rE   r4   r5   s   @r   r)   r)   <   sk        ''     ' ' ' '- - - - - - - -r   r)   c                     t          di | S )Nr   )r   )r$   s    r   makeExtensionrU   `   s    &&v&&&r   )r	   r
   r   r
   r   r
   r   r
   )r3   
__future__r   rB   r   inlinepatternsr   xml.etree.ElementTreerF   ElementTreer   typingr   r   r   r)   rU   r   r   r   <module>r[      s    # " " " " "       , , , , , , % % % % % % % % % 				      3 3 3 3D D D D D	 D D D.!- !- !- !- !- !- !- !-H' ' ' ' 'r   