B
    (d                 @   s  d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZmZmZ dd	lmZmZmZmZmZmZmZmZmZm Z m!Z! dd
l"m#Z#m$Z$ dddddddddddddgZ%G dd deZ&G dd deZ'G dd deZ(G dd deZ)G dd deZ*G dd deZ+G dd de+Z,G dd deZ-G d d deZ.G d!d deZ/G d"d deZ0G d#d deZ1G d$d deZ2dS )%z
    pygments.lexers.markup
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for non-HTML markup languages.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)XmlLexer)JavascriptLexer)CssLexer)LilyPondLexer)	JsonLexer)	
RegexLexerDelegatingLexerincludebygroupsusingthisdo_insertionsdefaultwords)TextCommentOperatorKeywordNameStringNumberPunctuationGenericOther
Whitespace)get_bool_optClassNotFoundBBCodeLexerMoinWikiLexerRstLexerTexLexer
GroffLexerMozPreprocHashLexerMozPreprocPercentLexerMozPreprocXulLexerMozPreprocJavascriptLexerMozPreprocCssLexerMarkdownLexerTiddlyWiki5LexerWikitextLexerc               @   sh   e Zd ZdZdZdgZdgZdefdedfdefgd	efd
e	e
jeefde	eefdedfgdZdS )r   zR
    A lexer that highlights BBCode(-like) syntax.

    .. versionadded:: 0.6
    BBCodebbcodeztext/x-bbcodez[^[]+z\[/?\w+tagz\[z\s+z(\w+)(=)("?[^\s"\]]+"?)z(=)("?[^\s"\]]+"?)z\]z#pop)rootr,   N)__name__
__module____qualname____doc__namealiases	mimetypesr   r   r
   r   	Attributer   r   tokens r7   r7   c/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/pygments/lexers/markup.pyr      s   
c               @   s   e Zd ZdZdZddgZg ZdgZej	ej
B Zdefdeeefdeejeeejefd	eejejd
fdefdeeejefdeeejefdefdeeeefdefdefdefdefgdejdfdedfdejfdejfgdZdS )r   zI
    For MoinMoin (and Trac) Wiki markup.

    .. versionadded:: 0.7
    zMoinMoin/Trac Wiki markupz	trac-wikimoinztext/x-trac-wikiz^#.*$z(!)(\S+)z^(=+)([^=]+)(=+)(\s*#.+)?$z(\{\{\{)(\n#!.+)?	codeblockz(\'\'\'?|\|\||`|__|~~|\^|,,|::)z^( +)([.*-])( )z^( +)([a-z]{1,5}\.)( )z\[\[\w+.*?\]\]z(\[[^\s\]]+)(\s+[^\]]+?)?(\])z^----+$z[^\n\'\[{!_~^,|]+z\n.z\}\}\}z#popz\{\{\{z#pushz[^{}]+)r-   r:   N)r.   r/   r0   r1   r2   r3   	filenamesr4   re	MULTILINE
IGNORECASEflagsr   r
   r   r   r   Headingr   r   r   r   Builtin	NamespacePreprocr6   r7   r7   r7   r8   r   @   s2   
c               @   s  e Zd ZdZdZdZdddgZddgZd	d
gZe	j
Zdd ZdZdZde	ee	ef Zdeejeejeejefdeejeejefdeeeeeddfdeeeeeddfdeeeeeddfdeeeeeddfdeeeeeddfdeeeeeddfdefdeeeejeeeeddfdeeeejeeddfdeeeejeeddfdeeeejeejeeeeddfdejfd eeejefd!eeeddeeddfd"ee j!ee e ee fe"dgd#efd$e d%fd&ee e j#e fd'e fd(eej$ej%fd)eej%ej$fd*ej&fd+ej'fd,e fd-ejfd.efd/efgd0e fd$e e d1fd2e fgd3Z(d4d5 Z)d6d7 Z*d8S )9r   an  
    For reStructuredText markup.

    .. versionadded:: 0.7

    Additional options accepted:

    `handlecodeblocks`
        Highlight the contents of ``.. sourcecode:: language``,
        ``.. code:: language`` and ``.. code-block:: language``
        directives with a lexer for the given language (default:
        ``True``).

        .. versionadded:: 0.8
    reStructuredTextz(https://docutils.sourceforge.io/rst.htmlrestructuredtextrstrestz*.rstz*.restz
text/x-rstztext/prs.fallenstein.rstc       
   	   c   s  ddl m} |dt|dfV  |dt|dfV  |dtj|dfV  |dt|dfV  |dt|dfV  |dt|dfV  |d	t|d	fV  d }| j	ry||d
 }W n tk
r   Y nX |d
}t|}||d |d |d }|d kr@|d
t|fV  d S g }|d}d}xX|D ]P}	t|	|kr|t|dt|	d | fgf ||	|d  7 }n||	7 }qXW t|||E d H  d S )Nr   )get_lexer_by_name                        	   
      T )pygments.lexersrI   startr   groupr   r   Wordr   handlecodeblocksstripr   lenr   
splitlinesappendr   get_tokens_unprocessed)
selfmatchrI   lexerZ	indentionZindention_sizecodeinsZ	codelinesliner7   r7   r8   _handle_sourcecode   s:    
"


"zRstLexer._handle_sourcecodeu   '")]}>’”»!?u   ‐‑‒–— z((?=$)|(?=[-/:.,; \n\x00%s%s]))zH^(=+|-+|`+|:+|\.+|\'+|"+|~+|\^+|_+|\*+|\++|#+)([ \t]*\n)(.+)(\n)(\1)(\n)zc^(\S.*)(\n)(={3,}|-{3,}|`{3,}|:{3,}|\.{3,}|\'{3,}|"{3,}|~{3,}|\^{3,}|_{3,}|\*{3,}|\+{3,}|#{3,})(\n)z!^(\s*)([-*+])( .+\n(?:\1  .+\n)*)inline)statez1^(\s*)([0-9#ivxlcmIVXLCM]+\.)( .+\n(?:\1  .+\n)*)z4^(\s*)(\(?[0-9#ivxlcmIVXLCM]+\))( .+\n(?:\1  .+\n)*)z$^(\s*)([A-Z]+\.)( .+\n(?:\1  .+\n)+)z*^(\s*)(\(?[A-Za-z]+\))( .+\n(?:\1  .+\n)+)z^(\s*)(\|)( .+\n(?:\|  .+\n)*)zl^( *\.\.)(\s*)((?:source)?code(?:-block)?)(::)([ \t]*)([^\n]+)(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\8.*)?\n)+)z,^( *\.\.)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))z'^( *\.\.)(\s*)(_(?:[^:\\]|\\.)+:)(.*?)$z^( *\.\.)(\s*)(\[.+\])(.*?)$z9^( *\.\.)(\s*)(\|.+\|)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))z^ *\.\..*(\n( +.*\n|\n)+)?z+^( *)(:(?:\\\\|\\:|[^:\n])+:(?=\s))([ \t]*)z!^(\S.*(?<!::)\n)((?:(?: +.*)\n)+)z2(::)(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\3.*)?\n)+)z\\.z``literalz(`.+?)(<.+?>)(`__?)z`.+?`__?z(`.+?`)(:[a-zA-Z0-9:-]+?:)?z(:[a-zA-Z0-9:-]+?:)(`.+?`)z\*\*.+?\*\*z\*.+?\*z\[.*?\]_z<.+?>z[^\\\n\[*`:]+r;   z[^`]+z#pop`)r-   rg   ri   c             K   s    t |dd| _tj| f| d S )NrZ   T)r   rZ   r   __init__)r`   optionsr7   r7   r8   rk     s    zRstLexer.__init__c             C   s   | d d dkr$| dd dkr$dS |  d}|  d|d }|dkr|d d |kr| |d  d	kr| |d  | |d  krd
S d S )NrK   z..rL   r;   g333333?
rJ   z-=g      ?)find)textp1p2r7   r7   r8   analyse_text	  s     
zRstLexer.analyse_textN)+r.   r/   r0   r1   r2   urlr3   r<   r4   r=   r>   r@   rf   ZclosersZunicode_delimitersescapeZend_string_suffixr
   r   rA   r   r   r   r   r   r   rY   r   Tagr   rD   Classr   Escaper	   InterpolVariabler5   StrongEmphr6   rk   rs   r7   r7   r7   r8   r   m   s   
)c            
   @   s  e Zd ZdZdZddgZdddgZdd	gZd
efde	j
fde	j
fgdejdfdedfdejdfdedfdedfdefeddefgde	jfeddefdefde	j
fgdedfdedfedgdedfdedfde	j
fedgde	jfd efedgd!Zd"d# Zd$S )%r    z<
    Lexer for the TeX and LaTeX typesetting languages.
    TeXtexlatexz*.texz*.auxz*.tocz
text/x-texztext/x-latexz%.*?\nz[{}]z[&_^]z\\\[displaymathz\\\(
inlinemathz\$\$z\$z\\([a-zA-Z]+|.)commandz\\$generalz[^\\$%&_^{}]+z[0-9]+z[-=!+*/()\[\]]z[^=!+*/()\[\]\\$%&_^{}0-9-]+z\\\)z#popmathz\\\]z\[.*?\]z\*)r   r-   r   r   r   r   c             C   s*   x$dD ]}| d t | |krdS qW d S )N)z\documentclassz\inputz\documentstylez\relaxT)r\   )rp   rW   r7   r7   r8   rs   H  s    
zTexLexer.analyse_textN)r.   r/   r0   r1   r2   r3   r<   r4   r   r   rB   r   Backtickr   r	   r   rz   r   r   r5   r   r6   rs   r7   r7   r7   r8   r      s@   




c            
   @   s   e Zd ZdZdZdddgZdddd	gZd
dgZdee	e
dfdedfde	dfedgedde	fde	dfgdefdejfdejfdejfdejfde	dfgde	dfeddejfdefdefde	fgdZdd  Zd!S )"r!   z
    Lexer for the (g)roff typesetting language, supporting groff
    extensions. Mainly useful for highlighting manpage sources.

    .. versionadded:: 0.6
    Groffgroffnroffmanz*.[1-9]z*.manz*.1pz*.3pmzapplication/x-troffz
text/troffz	(\.)(\w+)requestz\.z[^\\\n]+textlineescapesz\nz#popz	\\"[^\n]*z\\[fn]\wz\\\(.{2}z	\\.\[.*\]z\\.z\\\nz	"[^\n"]+"z\d+z\S+z\s+)r-   r   r   r   c             C   s`   | d d dkrdS | d d dkr(dS | d d dkr<dS | dd   r\| d  r\d	S d S )
NrJ   r;   FrL   z.\"TrM   z.TH g?)isalnumisspace)rp   r7   r7   r8   rs   |  s    zGroffLexer.analyse_textN)r.   r/   r0   r1   r2   r3   r<   r4   r
   r   r   r   r   r	   r   r   rx   Doubler   r6   rs   r7   r7   r7   r8   r!   O  s2   


c               @   s   e Zd ZdZdZegZg Zg Zdej	dfde
fgdeej	edfedej	d	fged
efdeeefdefdejfdejfdejfdefded	fdefdefg
dZdS )r"   z
    Lexer for Mozilla Preprocessor files (with '#' as the marker).

    Other data is left untouched.

    .. versionadded:: 2.0
    mozhashpreprocz^#)expr	exprstartz.+z(literal)(.*)z#pop:2)ZdefineZundefifZifdefZifndefelseelifZelifdefZelifndefendifexpandfilterZunfilterr	   Zincludesubsterrorz#pop)!z!=z==z&&z||z(defined)(\()z\)z[0-9]+z__\w+?__z@\w+?@z\w+z\nz\s+z\S)r-   r   r   N)r.   r/   r0   r1   r2   r3   r<   r4   r   rD   r   r
   r   r   r   r   r   r   Decimalr   rz   rw   r6   r7   r7   r7   r8   r"     s*   


c               @   s:   e Zd ZdZdZegZg Zg Zddej	dfde
fgiZdS )r#   z
    Lexer for Mozilla Preprocessor files (with '%' as the marker).

    Other data is left untouched.

    .. versionadded:: 2.0
    mozpercentpreprocr-   z^%)r   r   z.+N)r.   r/   r0   r1   r2   r3   r<   r4   r   rD   r   r6   r7   r7   r7   r8   r#     s   
c                   s4   e Zd ZdZdZdgZdgZg Z fddZ  Z	S )r$   z
    Subclass of the `MozPreprocHashLexer` that highlights unlexed data with the
    `XmlLexer`.

    .. versionadded:: 2.0
    zXUL+mozpreproczxul+mozpreprocz*.xul.inc                s   t  jttf| d S )N)superrk   r   r"   )r`   rl   )	__class__r7   r8   rk     s    zMozPreprocXulLexer.__init__)
r.   r/   r0   r1   r2   r3   r<   r4   rk   __classcell__r7   r7   )r   r8   r$     s   c                   s4   e Zd ZdZdZdgZdgZg Z fddZ  Z	S )r%   z
    Subclass of the `MozPreprocHashLexer` that highlights unlexed data with the
    `JavascriptLexer`.

    .. versionadded:: 2.0
    zJavascript+mozpreproczjavascript+mozpreprocz*.js.inc                s   t  jttf| d S )N)r   rk   r   r"   )r`   rl   )r   r7   r8   rk     s    z"MozPreprocJavascriptLexer.__init__)
r.   r/   r0   r1   r2   r3   r<   r4   rk   r   r7   r7   )r   r8   r%     s   c                   s4   e Zd ZdZdZdgZdgZg Z fddZ  Z	S )r&   z
    Subclass of the `MozPreprocHashLexer` that highlights unlexed data with the
    `CssLexer`.

    .. versionadded:: 2.0
    zCSS+mozpreproczcss+mozpreprocz*.css.inc                s   t  jttf| d S )N)r   rk   r   r#   )r`   rl   )r   r7   r8   rk     s    zMozPreprocCssLexer.__init__)
r.   r/   r0   r1   r2   r3   r<   r4   rk   r   r7   r7   )r   r8   r&     s   c               @   s  e Zd ZdZdZdZddgZddgZdgZe	j
Zd	d
 Zdeejefdeejefdeejeejefdeejeejefdeeeeeeddfdeeeeeeddfdeeeeeddfdeeejfdejfdefedgdefdeeejfdeeejfdeeejfdeeejfdeeejfdeeejfdejfdeeejeeejefd eeejeeej efd!eeej eejfd"efd#efgd$Z!d%d& Z"d'S )(r'   z9
    For Markdown markup.

    .. versionadded:: 2.2
    Markdownz-https://daringfireball.net/projects/markdown/markdownmdz*.mdz
*.markdownztext/x-markdownc             c   s   ddl m} |dtj|dfV  |dtj|dfV  |dt|dfV  d}| jry||d }W n t	k
r   Y nX |d}|dkr|dt|fV  nt
g ||E dH  |dtj|dfV  dS )	zV
        match args: 1:backticks, 2:lang_name, 3:newline, 4:code, 5:backticks
        r   )rI   rJ   rK   rL   NrM   rN   )rV   rI   rW   r   r   rX   r   rZ   r[   r   r   r_   )r`   ra   rI   rb   rc   r7   r7   r8   _handle_codeblock  s    
zMarkdownLexer._handle_codeblockz(^#[^#].+)(\n)z(^#{2,6}[^#].+)(\n)z^(.+)(\n)(=+)(\n)z^(.+)(\n)(-+)(\n)z^(\s*)([*-] )(\[[ xX]\])( .+\n)rg   )rh   z^(\s*)([*-])(\s)(.+\n)z^(\s*)([0-9]+\.)( .+\n)z^(\s*>\s)(.+\n)z^(\s*```\n[\w\W]*?^\s*```$\n)z(^(\s*```)(\w+)(\n)([\w\W]*?)(^\s*```$\n)z\\.z([^`]?)(`[^`\n]+`)z ([^\*]?)(\*\*[^* \n][^*\n]*\*\*)z([^_]?)(__[^_ \n][^_\n]*__)z([^\*]?)(\*[^* \n][^*\n]*\*)z([^_]?)(_[^_ \n][^_\n]*_)z([^~]?)(~~[^~ \n][^~\n]*~~)z[@#][\w/:]+z (!?\[)([^]]+)(\])(\()([^)]+)(\))z(\[)([^]]+)(\])(\[)([^]]*)(\])z^(\s*\[)([^]]*)(\]:\s*)(.+)z[^\\\s]+r;   )r-   rg   c             K   s    t |dd| _tj| f| d S )NrZ   T)r   rZ   r   rk   )r`   rl   r7   r7   r8   rk   ^  s    zMarkdownLexer.__init__N)#r.   r/   r0   r1   r2   rt   r3   r<   r4   r=   r>   r@   r   r
   r   rA   r   
Subheadingr   r   r   r   r|   r   r   r	   r{   Deletedr   Entityrv   r5   Labelr6   rk   r7   r7   r7   r8   r'     sN   c               @   s  e Zd ZdZdZdZdgZdgZdgZe	j
Zdd Zd	d
 Zdeeeejfdeejefdeejefdeeeeeeddfdeeeefdeejfdeejfdeejfdeejfdeeeefdefdefededgeddddefgdefdejfd eeejefd!eeejfd"eeejfd#eeejfd$eeejefd%eeejefd&ejfd'ejfd(ejfd)ejfd*ejfd+ej fd,ej!fd-eeejefd.eeejeej"efd/eeejefd0eej"fd1efd2efgd3Z#d4d5 Z$d6S )7r(   z<
    For TiddlyWiki5 markup.

    .. versionadded:: 2.7
    tiddlerz$https://tiddlywiki.com/#TiddlerFilestidz*.tidztext/vnd.tiddlywikic             c   s   ddl m} |dt|dfV  |dt|dfV  |dt|dfV  d}| jry||d }W n tk
r   Y nX |d}|dkr|dt|fV  dS t	g |
|E dH  |dt|dfV  dS )	zV
        match args: 1:backticks, 2:lang_name, 3:newline, 4:code, 5:backticks
        r   )rI   rJ   rK   rL   NrM   rN   )rV   rI   rW   r   rX   r   rZ   r[   r   r   r_   )r`   ra   rI   rb   rc   r7   r7   r8   r   p  s     
z"TiddlyWiki5Lexer._handle_codeblockc             c   s   ddl m} |dt|dfV  |dt|dfV  d}| jrhy|d}W n tk
rf   Y nX |d}|dkr|dt|fV  dS tg ||E dH  |dt|dfV  dS )	zP
        match args: 1:style tag 2:newline, 3:code, 4:closing style tag
        r   )rI   rJ   rK   NcssrL   rM   )	rV   rI   rW   r   rX   rZ   r   r   r_   )r`   ra   rI   rb   rc   r7   r7   r8   _handle_cssblock  s    
z!TiddlyWiki5Lexer._handle_cssblockz^(title)(:\s)(.+\n)z^(!)([^!].+\n)z^(!{2,6})(.+\n)z^(\s*)([*#>]+)(\s*)(.+\n)rg   )rh   z^(<<<.*\n)([\w\W]*?)(^<<<.*$)z^(\|.*?\|h)$z^(\|.*?\|[cf])$z^(\|.*?\|k)$z^(;.*)$z^(```\n)([\w\W]*?)(^```$)z ^(```)(\w+)(\n)([\w\W]*?)(^```$)z$^(<style>)(\n)([\w\W]*?)(^</style>$)keywords)z\definez\endcaptioncreatedmodifiedtagstitletype^z\b)prefixsuffixz\\.z\d{17}z(\s)(//[^/]+//)((?=\W|\n))z(\s)(\^\^[^\^]+\^\^)z(\s)(,,[^,]+,,)z(\s)(__[^_]+__)z(\s)(''[^']+'')((?=\W|\n))z(\s)(~~[^~]+~~)((?=\W|\n))z	<<[^>]+>>z\$\$[^$]+\$\$z\$\([^)]+\)\$z^@@.*$z	</?[^>]+>z`[^`]+`z&\S*?;z(\[{2})([^]\|]+)(\]{2})z$(\[{2})([^]\|]+)(\|)([^]\|]+)(\]{2})z(\{{2})([^}]+)(\}{2})z(\b.?.?tps?://[^\s"]+)z[\w]+r;   )r-   r   rg   c             K   s    t |dd| _tj| f| d S )NrZ   T)r   rZ   r   rk   )r`   rl   r7   r7   r8   rk     s    zTiddlyWiki5Lexer.__init__N)%r.   r/   r0   r1   r2   rt   r3   r<   r4   r=   r>   r@   r   r   r
   r   r   r   rA   r   r   r   r   r{   r|   r   rv   r	   r   r   Integerr   r   Regexr5   r6   rk   r7   r7   r7   r8   r(   c  sl   c            Q   @   s8  e Zd ZdZdZdZddgZg ZdgZe	j
Zdd Zd	d
 Zdd Zdd Zdd Zdd ZdZdZdZdZdddddddddh	Zd d!d"d#d$d%d&d'd(d)h
Zd*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEhZedEh ZdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddh<Zddddddddddddddddddddddddddddddddh Zddddddddddddddddddddddddddddddddddddddddddddddddddh2ZdddddddhZdddddddddddddddddddddddddddddddddddddd ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+hQZd,d-d.d/d0d1d2d3d4d5dՐd6d7d8d9d:d;d<d=d>d֐d?d@dAdBhZdddߐdCdDdEddddddFdGdd	d
dddddddHdIdJdKdLddddddddddddd d!d"d#d$d%d&d'd(d)d*d+dՐdMdNdOh7Z dPe!e"e#e"e$dQfdRe!e%j&e%j&e%j&e"fdSe!e%j'e"fe(edTdUe)j*j+fe(ee)j*j+fdV,dW-eeee)j.fdX,ee)j*j+fdYj,edZe d[d\e)j*j+fe/d]e/d^e/d_gd`e!e$e"dafdbe!e$e)j.fdc,ee)j0fgdde#dWfdee#fdfe#fgdge#fe/dhdie!e%j1e%j2djfdke%j2dlfdme%j1dnfe/dodp,ee dqe!e$e)j3e$e)j0e$e)j.drfds,dW-ee4dtduee dqe!e$e)j3e$e)j0e$e)j.e$fdv,dW-ee4dtduee dqe!e$e)j3e$e)j0e$e)j.e$dwfdx,dW-eeee!e$e)j.e"dyfdze!e#e"e$e5e6d{d|gd}dxfd~,dW-ee!e$e)j0dfd,dW-ee!e$e)j0e"e$fde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0dfde!e$e)j0e"e$fde!e$e)j0efde!e$e)j0e"e5e6d{d|gd}e$fde!e$e)j0e"e$fde!e$e)j0efde!e$e)j0e"e5e6d{d|gd}e$fde!e$e)j0e"e$fde!e$e)j0efde!e$e)j0e"e5e6d{d|gd}e$fd~,dW-ee!e$e)j0dfd,dW-ee!e$e)j0e"e$fdj,dW-ede!e$e#e$e)j.e7e)j.e$dfde$dfg)de$dafde$dafe/d^e/d_gde$dafde!e$e)j8e7fde$fe/d^e/d_gde$dafde9dafge/ddie!e%j1e%j2dfdke%j2dfdme%j1dafe/d^e/dge/dde!e%j2e%j1dfdke%j2dafdme%j1dfe/d^e/dge/ddie!e%j1e%j2dafdke%j2dfdme%j1dfe/d^e/dge/dde!e%j2e%j1dafdke%j2dfdme%j1dfe/dgdj,dW-ede!e$e)j.e7e)j.e$fde$dafe/d^e/d_gde$dafe/d^e/d_gde:j;fde!e$e)j<dfddW-e e!e$e"e)j*e"e$fddW-e e!e$e"e)j*e"e$fde$dfde!e$e)j0e$e=e$fde$dafde!e$e)j0dfde!e$e)j0e"e$fg	de$dafde$fe/d^e/d_gde:j;fde"fdedW-ef e!e)j*e$dfd̐dW-e  e!e)j*e$dfde e!e)j3e$dfe>d΃gde!e9e$dfde$dafde9dafe/dofee)j0de$dafde$fde!e)j.e7fe/d^e/d_gde!e"e$dafde!e"e$e5e6d{d|gd}fde!e"e$e5e6d{d|gd}e$e%j'fde!e$e5e6d{d|gd}e$fde!e$e5e6d{d|gd}e$dfe/d]e/d^e/d_gde9dafde!e$e5e6d{d|gd}e$ffee%j&de)j?fgde9dafe/d^de#dafe/d_gde$dafe/d^e/d_ge/dhe/d_ge/dode"fde!e7e"e=j@dfde!e7e"e=jAdfde!e7e"dfde)j8fgde"dafe/dofee=de=jAdafe/dofee=jAde=j@dafe/dofee=j@de$dafe/dgde$dfde$dafe/dge/dode"fde!e7e"e=j@dfde!e7e"e=jAdfde!e7e"dfde)j8fgde"dafde$dfe/dofee=de=jAdafde$dfe/dofee=jAde=j@dafde$dfe/dofee=j@edededededededededededededeBedeBedeBedeCee%j1ee%j2ee9d5ZDdS (  r)   a,  
    For MediaWiki Wikitext.

    Parsing Wikitext is tricky, and results vary between different MediaWiki
    installations, so we only highlight common syntaxes (built-in or from
    popular extensions), and also assume templates produce no unbalanced
    syntaxes.

    .. versionadded:: 2.15
    ZWikitextz'https://www.mediawiki.org/wiki/WikitextZwikitextZ	mediawikiztext/x-wikic             C   s*   d | tttjttdftdtdgS )Nz(?i)(</)({})(\s*)(>)z#popentityrp   )formatr
   r   r   rv   r   r	   )tag_namer7   r7   r8   nowiki_tag_rules  s    zWikitextLexer.nowiki_tag_rulesc             C   s    d | ttttjttdfgS )Nz(?si)(.*?)(</)({})(\s*)(>)z#pop)r   r
   r   r   r   rv   r   )r   r7   r7   r8   plaintext_tag_rules  s    z!WikitextLexer.plaintext_tag_rulesc             C   s.   d | tttjttdfd | t|fgS )Nz(?i)(</)({})(\s*)(>)z#popz(?si).+?(?=</{}\s*>))r   r
   r   r   rv   r   r   )r   rb   r7   r7   r8   delegate_tag_rules"  s    z WikitextLexer.delegate_tag_rulesc             C   s   d| fd| fd| fgS )Nz\w+z[^\S\n]+z(?s).r7   )tokenr7   r7   r8   
text_rules)  s    zWikitextLexer.text_rulesc             c   s@  ddl m} | }d}d}x.|d|}||d | dkr@P |d }qW |dkrp| j|dd	gd
E d H  d S |d | }| j|dd	gd
E d H  |d| tdfV  d }||d d  }	td|}
t	|
dkr|
d d }y||}W n t
k
r   Y nX |d kr,| | d t|	fV  n||	E d H  d S )Nr   )rI   >rK   z--rJ   rn   r-   attr)stackrL   z\blang=("|\'|)(\w+)(\1))rV   rI   rX   ro   r_   rW   r   r=   findallr\   r   r   )r`   ra   ctxrI   attr_contentrW   indexr   rb   content
lang_matchlangr7   r7   r8   handle_syntaxhighlight0  s6    
z$WikitextLexer.handle_syntaxhighlightc       
      c   s  |  }d}d}x.|d|}||d | dkr4P |d }qW |dkrd| j|ddgd	E d H  d S |d | }||d d  }| j|ddgd	E d H  |d
| tdfV  td|}t|dkr|d d nd}	|	dkrt |E d H  n| | d t	|fV  d S )Nr   r   rK   z--rJ   rn   r-   r   )r   rL   z\blang=("|\'|)(\w+)(\1)lilypond)
rX   ro   r_   rW   r   r=   r   r\   r   r   )
r`   ra   r   r   rW   r   r   r   r   r   r7   r7   r8   handle_scoreV  s(    zWikitextLexer.handle_scorez0 %!"$&\'()*,\-./0-9:;=?@A-Z\\\^_`~+\u0080-\uFFFFzT(?:\t|&nbsp;|&\#0*160;|&\#[Xx]0*[Aa]0;|[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000])zb(?:[0-9.]+|\[[0-9a-f:.]+\]|[^\x00-\x20"<>\[\]\x7F\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFFFD])zF[^\x00-\x20"<>\[\]\x7F\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFFFD]Z__FORCETOC__Z__NOCONTENTCONVERT__Z__NOCC__Z__NOEDITSECTION__Z__NOGALLERY__Z__NOTITLECONVERT__Z__NOTC__Z	__NOTOC__Z__TOC__Z__EXPECTUNUSEDCATEGORY__Z__HIDDENCAT__Z	__INDEX__Z__NEWSECTIONLINK__Z__NOINDEX__Z__NONEWSECTIONLINK__Z__STATICREDIRECT__Z__NOGLOBAL__Z__DISAMBIG__Z__EXPECTED_UNCONNECTED_PAGE__zbitcoin:zftp://zftps://zgeo:zgit://z	gopher://zhttp://zhttps://zirc://zircs://zmagnet:zmailto:zmms://znews:znntp://zredis://zsftp://zsip:zsips:zsms:zssh://zsvn://ztel:z	telnet://zurn:zworldwind://zxmpp:z//ZabbrbZbdiZbdobigZ
blockquotebrr   centerZciterc   datadddeldfndivdldtZemZfontZh1Zh2Zh3Zh4Zh5Zh6hrird   ZkbdZlilinkmarkmetaolpqrbrprtZrtcrubysZsampZsmallspanstrikestrongsubsuptabletdthtimetrttuZulvarZwbrgraphZ
charinsertZrssZchemZcategorytreeZnowikiZinputboxr   ZhieroZscorepreref	translateZimagemapZtemplatestyles	languagesZ	noincludeZmapframesectionZpoemZsyntaxhighlightZincludeonlytvarZonlyincludeZtemplatedataZlangconvertZtimelineZdynamicpagelistZgalleryZmaplinkZceZ
referenceszhzzh-hanszzh-hantzzh-cnzzh-hkzzh-mozzh-myzzh-sgzzh-twuzzuz-latnzuz-cyrlZtlyztly-cyrltgztg-latnsrzsr-eczsr-elZshizshi-tfngzshi-latnzsh-latnzsh-cyrlZkuzku-arabzku-latnkkzkk-cyrlzkk-latnzkk-arabzkk-kzzkk-trzkk-cniuzike-canszike-latnZganzgan-hanszgan-hantenzen-x-piglatinZcrhzcrh-cyrlzcrh-latnZbanzban-balizban-x-dharmazban-x-palmleafz	ban-x-pkuZARTICLEPATHINTZPAGEIDZ
SCRIPTPATHZSERVERZ
SERVERNAMEZ	STYLEPATHr   =ZBASEPAGENAMEZBASEPAGENAMEEZCASCADINGSOURCESZCONTENTLANGUAGEZCONTENTLANGZ
CURRENTDAYZCURRENTDAY2ZCURRENTDAYNAMEZ
CURRENTDOWZCURRENTHOURZCURRENTMONTHZCURRENTMONTH2ZCURRENTMONTH1ZCURRENTMONTHABBREVZCURRENTMONTHNAMEZCURRENTMONTHNAMEGENZCURRENTTIMEZCURRENTTIMESTAMPZCURRENTVERSIONZCURRENTWEEKZCURRENTYEARZDIRECTIONMARKZDIRMARKZFULLPAGENAMEZFULLPAGENAMEEZLOCALDAYZ	LOCALDAY2ZLOCALDAYNAMEZLOCALDOWZ	LOCALHOURZ
LOCALMONTHZLOCALMONTH2ZLOCALMONTH1ZLOCALMONTHABBREVZLOCALMONTHNAMEZLOCALMONTHNAMEGENZ	LOCALTIMEZLOCALTIMESTAMPZ	LOCALWEEKZ	LOCALYEARZ	NAMESPACEZ
NAMESPACEEZNAMESPACENUMBERZNUMBEROFACTIVEUSERSZNUMBEROFADMINSZNUMBEROFARTICLESZNUMBEROFEDITSZNUMBEROFFILESZNUMBEROFPAGESZNUMBEROFUSERSZPAGELANGUAGEZPAGENAMEZ	PAGENAMEEZREVISIONDAYZREVISIONDAY2Z
REVISIONIDZREVISIONMONTHZREVISIONMONTH1ZREVISIONSIZEZREVISIONTIMESTAMPZREVISIONUSERZREVISIONYEARZROOTPAGENAMEZROOTPAGENAMEEZSITENAMEZSUBJECTPAGENAMEZARTICLEPAGENAMEZSUBJECTPAGENAMEEZARTICLEPAGENAMEEZSUBJECTSPACEZARTICLESPACEZSUBJECTSPACEEZARTICLESPACEEZSUBPAGENAMEZSUBPAGENAMEEZTALKPAGENAMEZTALKPAGENAMEEZ	TALKSPACEZ
TALKSPACEEZANCHORENCODEZBIDIZCANONICALURLZCANONICALURLEZFILEPATHZ	FORMATNUMZFULLURLZFULLURLEZGENDERZGRAMMARz
\#LANGUAGEZLCZLCFIRSTZLOCALURLZ	LOCALURLEZNSZNSEZPADLEFTZPADRIGHTZPLURALZUCZUCFIRSTZ	URLENCODEZDEFAULTSORTZDEFAULTSORTKEYZDEFAULTCATEGORYSORTZNUMBERINGROUPZ
NUMINGROUPZPAGESINCATEGORYZ
PAGESINCATPAGESIZEZPROTECTIONEXPIRYZPROTECTIONLEVELZDISPLAYTITLEZPAGESINNAMESPACEZ	PAGESINNSz~(?xi)
                (\A\s*?)(\#REDIRECT:?) # may contain a colon
                (\s+)(\[\[) (?=[^\]\n]* \]\]$)
            zredirect-innerz^(={2,6})(.+?)(\1)(\s*$\n)z^(=.+?=)(\s*$\n)z(?i))r   z(?i)\b(?:{}){}{}*|z\b(?:RFC|PMID){}+[0-9]+\bz(?x)
                \bISBN {nbsp_char}
                (?: 97[89] {nbsp_dash}? )?
                (?: [0-9] {nbsp_dash}? ){{9}} # escape format()
                [0-9Xx]\b
            z(?:-|))	nbsp_charZ	nbsp_dashlistrg   rp   z(\]\])(\s*?\n)z#popz(\#)([^#]*?)z	(?i)[{}]+z^;z^[#:*]+z^-{4,}z~{3,5}r   z('')(''')(?!')zinline-italic-boldz'''(?!')zinline-boldz''(?!')zinline-italicreplaceablez(?xi)
                (\[\[)
                    (File|Image) (:)
                    ([{}]*)
                    (?: (\#) ([{}]*?) )?
                #zmedialink-innerz(?xi)
                (\[\[)(?!{}) # Should not contain URLs
                    (?: ([{}]*) (:))?
                    ([{}]*?)
                    (?: (\#) ([{}]*?) )?
                (\]\])
                /rU   z(?xi)
                (\[\[)(?!{})
                    (?: ([{}]*) (:))?
                    ([{}]*?)
                    (?: (\#) ([{}]*?) )?
                    (\|)
                zwikilink-innerzi(?xi)
                (\[)
                    ((?:{}) {} {}*)
                    (\s*)
                zextlink-innerz^(:*)(\s*?)(\{\|)([^\n]*)$r-   r   )rh   z(?i)(<)({})\bztag-inner-ordinaryz(?i)(</)({})\b(\s*)(>)z(?i)(<)(nowiki)\b)z
tag-nowikiz	tag-innerz(?i)(<)(pre)\b)ztag-prez	tag-innerz(?i)(<)(categorytree)\b)ztag-categorytreez	tag-innerz(?i)(<)(hiero)\b)z	tag-hieroz	tag-innerz(?i)(<)(math)\b)ztag-mathz	tag-innerz(?i)(<)(chem)\b)ztag-chemz	tag-innerz(?i)(<)(ce)\b)ztag-cez	tag-innerz(?i)(<)(charinsert)\b)ztag-charinsertz	tag-innerz(?i)(<)(templatedata)\b)ztag-templatedataz	tag-innerz(?i)(<)(gallery)\b)ztag-galleryz	tag-inner)z	tag-graphz	tag-innerz(?i)(<)(dynamicpagelist)\b)ztag-dynamicpagelistz	tag-innerz(?i)(<)(inputbox)\b)ztag-inputboxz	tag-innerz(?i)(<)(rss)\b)ztag-rssz	tag-innerz(?i)(<)(imagemap)\b)ztag-imagemapz	tag-innerz#(?i)(</)(syntaxhighlight)\b(\s*)(>)z9(?si)(<)(syntaxhighlight)\b([^>]*?(?<!/)>.*?)(?=</\2\s*>)z?(?i)(<)(syntaxhighlight)\b(\s*?)((?:[^>]|-->)*?)(/\s*?(?<!--)>)z(?i)(</)(source)\b(\s*)(>)z0(?si)(<)(source)\b([^>]*?(?<!/)>.*?)(?=</\2\s*>)z6(?i)(<)(source)\b(\s*?)((?:[^>]|-->)*?)(/\s*?(?<!--)>)z(?i)(</)(score)\b(\s*)(>)z/(?si)(<)(score)\b([^>]*?(?<!/)>.*?)(?=</\2\s*>)z5(?i)(<)(score)\b(\s*?)((?:[^>]|-->)*?)(/\s*?(?<!--)>)z(?xi)
                (-\{{) # Escape format()
                    (?: ([^|]) (\|))?
                    (?: (\s* (?:{variants}) \s*) (=>))?
                    (\s* (?:{variants}) \s*) (:)
                )variantszlc-innerz-\{zlc-rawz(?=\[\[)z\]\]z(\|)([^\n=|]*)(=)z\|z(?=\]\]|\{\{|\}\})z\nzquote-common)z#popzinline-bold)z#popzinline-italic-boldztext-italicz(''')('')(?!'))z#popzinline-italic)z#popzinline-bold-italicz	text-boldz(?xi)
                (;)
                (?: (\s* (?:{variants}) \s*) (=>))?
                (\s* (?:{variants}) \s*) (:)
                z	;?\s*?\}-z\}-z<!--[\s\S]*?(?:-->|\Z)zk(?x)
                (\{{3})
                    ([^|]*?)
                    (?=\}{3}|\|)
                zparameter-innerz(?i)(\{\{)(\s*)(%s)(\s*)(\}\})z(\{\{)(\s*)(%s)(\s*)(\}\})z\{\{ztemplate-begin-spacez(?i)(<)(tvar)\b(\|)([^>]*?)(>)z</>z(?i)(<)(tvar)\bz(?i)(</)(tvar)\b(\s*)(>)z\}{3}z\s+z(?i)(\#[%s]*?|%s)(:))z#popztemplate-innerz(%s)(:)z(?i)([%s]*?)(:))z#popztemplate-namez
(\s*?)(\|)z\}\}z(?x)
                    (?<=\|)
                    ( (?: (?! \{\{ | \}\} )[^=\|<])*? ) # Exclude templates and tags
                    (=)
                z^([ \t\n\r\0\x0B]*?)(\|\})z^([ \t\n\r\0\x0B]*?)(\|-+)(.*)$z(?x)
                ^([ \t\n\r\0\x0B]*?)(\|\+)
                # Exclude links, template and tags
                (?: ( (?: (?! \[\[ | \{\{ )[^|\n<] )*? )(\|) )?
                (.*?)$
                z(?x)
                ( ^(?:[ \t\n\r\0\x0B]*?)\| | \|\| )
                (?: ( (?: (?! \[\[ | \{\{ )[^|\n<] )*? )(\|)(?!\|) )?
                z(?x)
                ( ^(?:[ \t\n\r\0\x0B]*?)!  )
                (?: ( (?: (?! \[\[ | \{\{ )[^|\n<] )*? )(\|)(?!\|) )?
                ztable-headerz(?x)
                (!!|\|\|)
                (?:
                    ( (?: (?! \[\[ | \{\{ )[^|\n<] )*? )
                    (\|)(?!\|)
                )?
                z&\S*?;:z\]z(=)(\s*)(")z
attr-val-2z(=)(\s*)(')z
attr-val-1z(=)(\s*)z
attr-val-0z[\w:-]+z\s'"z/?\s*>ztag-attrz/\s*>z#pop:2z\s*>ztag-attr-val-2ztag-attr-val-1ztag-attr-val-0z/?>)5r-   zredirect-innerr  rg   zwikilink-innerzmedialink-innerzquote-commonzinline-italiczinline-boldzinline-bold-italiczinline-italic-boldzlc-innerzlc-rawr  zparameter-innerztemplate-begin-spaceztemplate-nameztemplate-innerr   ztable-headerr   r   zextlink-innerz
nowiki-ishr   z
attr-val-0z
attr-val-1z
attr-val-2ztag-inner-ordinaryz	tag-innerztag-attrztag-attr-val-0ztag-attr-val-1ztag-attr-val-2z
tag-nowikiztag-preztag-categorytreeztag-dynamicpagelistz	tag-hieroztag-inputboxztag-imagemapztag-charinsertztag-timelineztag-galleryz	tag-graphztag-rssztag-mathztag-chemztag-ceztag-templatedataztext-italicz	text-boldrp   N)Er.   r/   r0   r1   r2   rt   r3   r<   r4   r=   r>   r@   r   r   r   r   r   r   Z
title_charr  Zlink_addressZlink_char_classZdouble_slashes_iZdouble_slashes	protocolsZnon_relative_protocolsZ	html_tagsZparser_tagsZvariant_langsZmagic_vars_iZ
magic_varsZparser_functions_iZparser_functionsr
   r   r   r   r   r   rA   r   r   FunctionMagicr   joinr   r	   rv   r|   r{   rC   replacer   r   r   r5   r   r   	Multilinerz   r   r   r   r   Singler    r   r6   r7   r7   r7   r8   r)     s  
&





""	
$






	
"""




































)3r1   r=   Zpygments.lexers.htmlr   Zpygments.lexers.javascriptr   Zpygments.lexers.cssr   Zpygments.lexers.lilypondr   Zpygments.lexers.datar   Zpygments.lexerr   r   r	   r
   r   r   r   r   r   Zpygments.tokenr   r   r   r   r   r   r   r   r   r   r   Zpygments.utilr   r   __all__r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r7   r7   r7   r8   <module>	   s8   ,4
!- ):8)n  