
    |e                     l    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Z
dZd	Zd
Z G d de      Zd Zy)a  
    pygments.sphinxext
    ~~~~~~~~~~~~~~~~~~

    Sphinx extension to generate automatic documentation of lexers,
    formatters and filters.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)nodes)ViewList)	Directive)nested_parse_with_titlesz
.. module:: %s

%s
%s
zX
.. class:: %s

    :Short names: %s
    :Filenames:   %s
    :MIME types:  %s

    %s

zA
.. class:: %s

    :Short names: %s
    :Filenames: %s

    %s

z'
.. class:: %s

    :Name: %s

    %s

c                   B    e Zd ZdZdZdZdZdZi Zd Z	d Z
d Zd Zd	 Zy
)PygmentsDoczn
    A directive to collect all lexers/formatters/filters and generate
    autoclass directives for them.
    F   r   c                    t               | _        | j                  d   dk(  r| j                         }nt| j                  d   dk(  r| j	                         }nQ| j                  d   dk(  r| j                         }n.| j                  d   dk(  r| j                         }nt        d      t        j                         }t        |j                  d      d	      }t        | j                  ||       | j                  D ];  }| j                  j                  j                  j                   j#                  |       = |j$                  S )
Nr   lexers
formattersfilterslexers_overviewz,invalid argument for "pygmentsdoc" directive
 )source)set	filenames	argumentsdocument_lexersdocument_formattersdocument_filtersdocument_lexers_overview	Exceptionr   compoundr   splitr   statedocumentsettingsrecord_dependenciesaddchildren)selfoutnodevlfns        4/usr/lib/python3/dist-packages/pygments/sphinxext.pyrunzPygmentsDoc.runE   s   >>!(&&(C^^A,.**,C^^A)+'')C^^A"33//1CJKK~~ciiob1 R6.. 	EBJJ((<<@@D	E}}    c                    ddl m} ddl}g }g }d }t        |j	                         d       D ]  \  }}|j
                  j                  |d         }|j                  |j                  z   }	|j                   ||d   |j                        dj                  |	      j                  d	d
      j                  dd      xs ddj                  |d         |d    d| d        g d}
|
D cg c]-  }t        |D cg c]  }||   s	t        ||          c}      / c}}fdfd}|j                   |              |j                   dddd             |j                   |              |D ],  }|j                   |d   |d   |d   d|d    d             . |j                   |              dj                  |      S c c}w c c}}w )zGenerate a tabular overview of all lexers.

        The columns are the lexer name, the extensions handled by this lexer
        (or "None"), the aliases and a link to the lexer class.r   LEXERSNc                     |r	d|  d| dS | S )N`z <z>`_ )nameurls     r'   format_linkz9PygmentsDoc.document_lexers_overview.<locals>.format_linkc   s    4&3%s++Kr)   c                 .    | d   d   j                         S )Nr	   )lowerxs    r'   <lambda>z6PygmentsDoc.document_lexers_overview.<locals>.<lambda>h   s    AaDGMMO r)   keyr	   , *\*_\None   .)r0   
extensionsaliasesclassc                      g }t        |       D ]<  \  }}|r!|j                  |j                  |             )|j                  d|z         > dj                  |      S )zFormat a table row )zipappendljustjoin)columnsr#   lccolumn_lengthss       r'   	write_rowz7PygmentsDoc.document_lexers_overview.<locals>.write_roww   sY    CNG4 &1JJqwwqz*JJs1u%	& 88C= r)   c                  <    D  cg c]  } d| z  	 }}  | S c c} w )zWrite a table separator row=r/   )rM   seprN   rO   s     r'   write_seperatorz=PygmentsDoc.document_lexers_overview.<locals>.write_seperator   s)    "01Q3q51C1c?" 2s   NamezExtension(s)zShort name(s)zLexer classr0   rB   rC   z	:class:`~rD   r.   r   )pygments.lexers._mappingr,   pygments.lexerssorteditemsr   find_lexer_classr   alias_filenamesrH   r1   rJ   replacemaxlen)r"   r,   pygmentsr#   tabler2   	classnamedata	lexer_clsrB   column_namescolumnrowrS   rN   rO   s                 @@r'   r   z$PygmentsDoc.document_lexers_overviewX   s   
 	4	
  &flln:ST 		OIt 88aAI",,y/H/HHJLL#DGY]];"ii
3;;CGOOPSUYZd^d99T!W- G9Ai[1	 			 B(46$ 5PCCKs3v;/PQ 6		!	#
 	

?$%

9V^_mTU

?$% 	.CJJyFL!ICL>+	- .	. 	

?$%yy~= Q 6s   /G=
GG	GGc           
         ddl m} dd l}dd l}dd l}g }i }i }t        |j                         d       D ]  \  }}	|	d   }
t        |
d d |g      }| j                  j                  |j                         t        ||      }|j                  st        d|z         |j                  }t        |t              r|j!                  d      }d }|r|j#                  |j%                  |            j&                  j&                  dz  dz  |z  }|j)                  d	
      }|st+        d| d|       |	d   r4|	d   d   }|dz  }|d| dz  }|j-                         D ]  }|d| dz  } |j/                  |
g       j1                  |dj3                  |	d         xs ddj3                  |	d         j5                  dd      j5                  dd      xs ddj3                  |	d         xs d|f       |
|vs|j                  }t        |t              r|j!                  d      }|||
<    t        |j                         d       D ]  \  }
}||
   t+        d|
      ||
   j-                         d   j7                         j9                  d      }|j1                  t:        |
|dt=        |      z  fz         |D ]  }	|j1                  t>        |	z           dj3                  |      S ) Nr   r+   c                     | d   S Nr   r/   r5   s    r'   r7   z-PygmentsDoc.document_lexers.<locals>.<lambda>   
    AaD r)   r8   z&Warning: %s does not have a docstring.utf8testsexamplefileszutf-8)encodingzEmpty example file 'z' for lexer r@   z

    .. admonition:: Example
z
      .. code-block:: z

z
          r   r:   r?      r;   r<   r=   r>      c                     | d   S rh   r/   r5   s    r'   r7   z-PygmentsDoc.document_lexers.<locals>.<lambda>   ri   r)   zMissing docstring for rA   -r   ) rU   r,   r^   inspectpathlibrW   rX   
__import__r   r    __file__getattr__doc__print
isinstancebytesdecodePath
getabsfileparent	read_textr   
splitlines
setdefaultrH   rJ   r[   striprstrip	MODULEDOCr]   LEXERDOC)r"   r,   r^   rr   rs   r#   modulesmoduledocstringsr`   ra   modulemodcls	docstringexample_filepcontent
lexer_namelinemoddocr   headings                         r'   r   zPygmentsDoc.document_lexers   s   3%flln.I &	2OIt!WFVT4)=CNNs||,#y)C;;>JKI)U+%,,V4	LLL!3!3H!=>EELL,-/;<++w+7#.|nL$+'( ( 7!%aJ!DDI#;J<t!LLI ' 2 2 4 ;!z$r%::	; vr*11		$q'",f		$q'"**36>>sDISV		$q'",f3  --fe,#]]62F+1 (M&	2P %W]]_.I 	,NFF'/f FGG&v.99;A>DDFMMcRGJJyFGSW5E#FFG ,

8d?+,	, wws|r)   c           
      (   ddl m} g }t        |j                         d       D ]  \  }}|d   }t	        |d d |g      }| j
                  j                  |j                         t        ||      }|j                  }t        |t              r|j                  d      }|j                  }	|j                  t        |	dj!                  |d         xs ddj!                  |d	         j#                  d
d      xs d|fz          dj!                  |      S )Nr   )
FORMATTERSc                     | d   S rh   r/   r5   s    r'   r7   z1PygmentsDoc.document_formatters.<locals>.<lambda>   s
    ! r)   r8   rj   r:   r@   r?   rn   r;   r<   r   )pygments.formattersr   rW   rX   rt   r   r    ru   rv   rw   ry   rz   r{   __name__rH   FMTERDOCrJ   r[   )
r"   r   r#   r`   ra   r   r   r   r   r   s
             r'   r   zPygmentsDoc.document_formatters   s    2%j&6&6&8nM 	/OIt!WFVT4)=CNNs||,#y)CI)U+%,,V4	llGJJx7DIId1g,>,H&#'99T!W#5#=#=c5#I#SV#,#. . /	/ wws|r)   c                    ddl m} g }|j                         D ]  \  }}| j                  j	                  t
        j                  |j                     j                         |j                  }t        |t              r|j                  d      }|j                  t        |j                  ||fz          dj!                  |      S )Nr   )FILTERSrj   r   )pygments.filtersr   rX   r   r    sysr   
__module__ru   rw   ry   rz   r{   rH   	FILTERDOCr   rJ   )r"   r   r#   r0   r   r   s         r'   r   zPygmentsDoc.document_filters   s    ,  	DID#NNs{{3>>:CCDI)U+%,,V4	JJyCLL$	#BBC	D wws|r)   N)r   r   __qualname__rw   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespaceoption_specr(   r   r   r   r   r/   r)   r'   r   r   :   s@     K %K&:x9v$
r)   r   c                 0    | j                  dt               y )Npygmentsdoc)add_directiver   )apps    r'   setupr      s    m[1r)   )rw   r   docutilsr   docutils.statemachiner   docutils.parsers.rstr   sphinx.util.nodesr   r   r   r   r   r   r   r/   r)   r'   <module>r      sK   	   * * 6			q) qh2r)   