U
    EZh-                     @   sh   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 deZdd ZdS )a  
    pygments.sphinxext
    ~~~~~~~~~~~~~~~~~~

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

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

%s
%s
z`
.. class:: %s

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

    %s

    %s

zA
.. class:: %s

    :Short names: %s
    :Filenames: %s

    %s

z'
.. class:: %s

    :Name: %s

    %s

c                   @   sL   e Zd ZdZdZdZdZdZi Zdd Z	dd Z
d	d
 Zdd Zdd ZdS )PygmentsDoczn
    A directive to collect all lexers/formatters/filters and generate
    autoclass directives for them.
    F   r   c                 C   s   t  | _| jd dkr |  }nP| jd dkr8|  }n8| jd dkrP|  }n | jd dkrh|  }ntdt	 }t
|ddd	}t| j|| | jD ]}| jjjj| q|jS )
Nr   lexers
formattersfiltersZlexers_overviewz,invalid argument for "pygmentsdoc" directive
 )source)set	filenames	argumentsdocument_lexersdocument_formattersdocument_filtersdocument_lexers_overview	Exceptionr   Zcompoundr   splitr   statedocumentsettingsZrecord_dependenciesaddchildren)selfoutnodeZvlfn r    B/tmp/pip-unpacked-wheel-36xvkur8/pip/_vendor/pygments/sphinxext.pyrunG   s     




zPygmentsDoc.runc              
      sb  ddl m} ddlm} g }g dd }t| dd dD ]r\}}||d	 }|j|j }||d	 |j	d

|ddddpdd

|d |d  d| d q<ddddg}	fdd|	D   fdd fdd}
||
  |dddd  ||
  D ]2}||d |d |d d!|d  d" q||
  d#
|S )$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   LEXERS)find_lexer_classc                 S   s   |rd|  d| dS | S )N`z <z>`_r    )nameurlr    r    r!   format_linke   s    z9PygmentsDoc.document_lexers_overview.<locals>.format_linkc                 S   s   | d d   S )Nr   )lowerxr    r    r!   <lambda>j       z6PygmentsDoc.document_lexers_overview.<locals>.<lambda>keyr   , *\*_\None   .)r'   
extensionsaliasesclassr'   r9   r:   r;   c                    s"   g | ] t  fd dD qS )c                    s    g | ]}|  rt |  qS r    )len).0rowcolumnr    r!   
<listcomp>v   s      zCPygmentsDoc.document_lexers_overview.<locals>.<listcomp>.<listcomp>)max)r=   )tabler?   r!   rA   v   s   z8PygmentsDoc.document_lexers_overview.<locals>.<listcomp>c                     sF   g }t  | D ],\}}|r,||| q|d|  qd|S )zFormat a table row )zipappendljustjoin)columnsr   lengthcol)column_lengthsr    r!   	write_rowy   s    z7PygmentsDoc.document_lexers_overview.<locals>.write_rowc                     s   dd  D } |  S )zWrite a table separator rowc                 S   s   g | ]}d | qS )=r    )r=   cr    r    r!   rA      s     zQPygmentsDoc.document_lexers_overview.<locals>.write_seperator.<locals>.<listcomp>r    )sep)rL   rM   r    r!   write_seperator   s    z=PygmentsDoc.document_lexers_overview.<locals>.write_seperatorNamezExtension(s)zShort name(s)zLexer classz	:class:`~r&   r   )$pip._vendor.pygments.lexers._mappingr$   Zpip._vendor.pygments.lexersr%   sorteditemsr   Zalias_filenamesrF   r(   rH   replace)r   r$   r%   r   r)   	classnamedataZ	lexer_clsr9   Zcolumn_namesrQ   r>   r    )rL   rC   rM   r!   r   Z   s@    


z$PygmentsDoc.document_lexers_overviewc              
   C   s  ddl m} ddlm} dd l}dd l}g }i }i }t| dd dD ]\}}	|	d }
t|
d d |g}| j	
|j t||}|jstd| d |j}t|tr|d	}t|d
d }|rX|||jjd d | }|jdd}|s
td| d| |	d rX|	d d }|d7 }|d| d7 }| D ]}|d| d7 }q@|jrnd|j }nd}||
g |d|	d pdd|	d ddddpdd|	d  pd||f |
|krH|j}t|tr|d	}|||
< qHt| d!d dD ]v\}
}||
 d kr6td"|
 ||
  d   d#}|t|
|d$t | f  |D ]}	|t!|	  qpqd|S )%Nr   r#   )pygmentsc                 S   s   | d S Nr   r    r+   r    r    r!   r-      r.   z-PygmentsDoc.document_lexers.<locals>.<lambda>r/   z	Warning: z does not have a docstring.utf8Z_exampletestsZexamplefileszutf-8)encodingzEmpty example file 'z' for lexer r7   z

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

z
          r   z.. versionadded:: r   r1   r6      r2   r3   r4   r5      c                 S   s   | d S rZ   r    r+   r    r    r!   r-      r.   zMissing docstring for r8   -)"rS   r$   pip._vendorrY   inspectpathlibrT   rU   
__import__r   r   __file__getattr__doc__print
isinstancebytesdecodePath
getabsfileparent	read_textr   
splitlinesZversion_added
setdefaultrF   rH   rV   striprstrip	MODULEDOCr<   LEXERDOC)r   r$   rY   rb   rc   r   modulesZmoduledocstringsrW   rX   modulemodcls	docstringZexample_filepcontentZ
lexer_namelineZversion_lineZmoddocr   headingr    r    r!   r      sz    



"

zPygmentsDoc.document_lexersc           
   
   C   s   ddl m} g }t| dd dD ]\}}|d }t|d d |g}| j|j t||}|j	}t
|trv|d}|j}	|t|	d|d pd	d|d
 ddpd	|f  q$d|S )Nr   )
FORMATTERSc                 S   s   | d S rZ   r    r+   r    r    r!   r-      r.   z1PygmentsDoc.document_formatters.<locals>.<lambda>r/   r[   r1   r7   r6   r^   r2   r3   r   )Zpip._vendor.pygments.formattersr   rT   rU   rd   r   r   re   rf   rg   ri   rj   rk   __name__rF   FMTERDOCrH   rV   )
r   r   r   rW   rX   rw   rx   ry   rz   r~   r    r    r!   r      s     



zPygmentsDoc.document_formattersc                 C   sr   ddl m} g }| D ]N\}}| jtj|j j |j	}t
|trP|d}|t|j||f  qd|S )Nr   )FILTERSr[   r   )Zpip._vendor.pygments.filtersr   rU   r   r   sysrv   
__module__re   rg   ri   rj   rk   rF   	FILTERDOCr   rH   )r   r   r   r'   ry   rz   r    r    r!   r      s    

zPygmentsDoc.document_filtersN)r   r   __qualname__rg   Zhas_contentZrequired_argumentsZoptional_argumentsZfinal_argument_whitespaceZoption_specr"   r   r   r   r   r    r    r    r!   r   <   s   <Ar   c                 C   s   |  dt d S )NZpygmentsdoc)Zadd_directiver   )Zappr    r    r!   setup   s    r   )rg   r   Zdocutilsr   Zdocutils.statemachiner   Zdocutils.parsers.rstr   Zsphinx.util.nodesr   rt   ru   r   r   r   r   r    r    r    r!   <module>   s   

 ;