B
    (‹d   ã               @   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-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               @   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||ƒ x | jD ]}| jjjj |¡ q W |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   ÚstateZdocumentÚsettingsZrecord_dependenciesÚaddÚchildren)ÚselfÚoutÚnodeZvlÚfn© r   ú_/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/pygments/sphinxext.pyÚrunE   s     



zPygmentsDoc.runc          
      sj  ddl m} ddl}g }g ‰dd„ }xŽt| ¡ dd„ dD ]v\}}|j |d	 ¡}|j|j }ˆ 	||d	 |j
ƒd
 |¡ dd¡ dd¡pŒdd
 |d ¡|d › d|› dœ¡ q:W ddddg}	‡fdd„|	D ƒ‰ ‡ fdd„‰‡ ‡fdd„}
| 	|
ƒ ¡ | 	ˆdddd ƒ¡ | 	|
ƒ ¡ x:ˆD ]2}| 	ˆ|d |d |d d!|d › d"ƒ¡ qW | 	|
ƒ ¡ d# |¡S )$z¸Generate 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             S   s   |rd| › d|› dS | S )Nú`z <z>`_r   )ÚnameÚurlr   r   r    Úformat_linkc   s    z9PygmentsDoc.document_lexers_overview.<locals>.format_linkc             S   s   | d d   ¡ S )Nr   )Úlower)Úxr   r   r    Ú<lambda>h   ó    z6PygmentsDoc.document_lexers_overview.<locals>.<lambda>)Úkeyr   z, Ú*z\*Ú_ú\ÚNoneé   Ú.)r$   Ú
extensionsÚaliasesÚclassr$   r2   r3   r4   c                s"   g | ]‰ t ‡ fd d„ˆD ƒƒ‘qS )c                s    g | ]}|ˆ  rt |ˆ  ƒ‘qS r   )Úlen)Ú.0Úrow)Úcolumnr   r    ú
<listcomp>t   s    zCPygmentsDoc.document_lexers_overview.<locals>.<listcomp>.<listcomp>)Úmax)r6   )Útable)r8   r    r9   t   s   z8PygmentsDoc.document_lexers_overview.<locals>.<listcomp>c                 sJ   g }x:t ˆ | ƒD ],\}}|r.| | |¡¡ q| d| ¡ qW d |¡S )zFormat a table rowú )ÚzipÚappendÚljustÚjoin)Úcolumnsr   ÚlÚc)Úcolumn_lengthsr   r    Ú	write_roww   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   )r6   rC   r   r   r    r9   „   s    zQPygmentsDoc.document_lexers_overview.<locals>.write_seperator.<locals>.<listcomp>r   )Úsep)rD   rE   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   )Úpygments.lexers._mappingr"   Zpygments.lexersÚsortedÚitemsr   Úfind_lexer_classr   Úalias_filenamesr>   r%   r@   Úreplace)r   r"   Úpygmentsr   r&   Ú	classnameÚdataZ	lexer_clsr2   Zcolumn_namesrH   r7   r   )rD   r;   rE   r    r   X   s:    

z$PygmentsDoc.document_lexers_overviewc          
   C   s¸  ddl m} g }i }i } xþt| ¡ dd„ dD ]æ\}}|d }t|d d |gƒ}| j |j¡ t||ƒ}	|	j	szt
d| ƒ |	j	}
t|
tƒr”|
 d¡}
| |g ¡ |d |d	 ¡p²d
d |d ¡ dd¡ dd¡pÒd
d |d ¡pâd
|
f¡ ||kr0|j	}t|tƒr| d¡}|||< q0W x’t| ¡ dd„ dD ]z\}}|| d krTtd|f ƒ‚||  ¡ d  ¡  d¡}| t||dt|ƒ f ¡ x|D ]}| t| ¡ qW q0W d |¡S )Nr   )r"   c             S   s   | d S )Nr   r   )r(   r   r   r    r)   ™   r*   z-PygmentsDoc.document_lexers.<locals>.<lambda>)r+   z&Warning: %s does not have a docstring.Úutf8z, r0   r/   é   r,   z\*r-   r.   é   c             S   s   | d S )Nr   r   )r(   r   r   r    r)   ¯   r*   zMissing docstring for %sr1   ú-r   )rJ   r"   rK   rL   Ú
__import__r   r   Ú__file__ÚgetattrÚ__doc__ÚprintÚ
isinstanceÚbytesÚdecodeÚ
setdefaultr>   r@   rO   r   Ú
splitlinesÚstripÚrstripÚ	MODULEDOCr5   ÚLEXERDOC)r   r"   r   ÚmodulesZmoduledocstringsrQ   rR   ÚmoduleÚmodÚclsÚ	docstringZmoddocr   Úheadingr   r   r    r   ”   sB     


 

zPygmentsDoc.document_lexersc       
   
   C   sÆ   ddl m} g }xªt| ¡ dd„ dD ]’\}}|d }t|d d |gƒ}| j |j¡ t||ƒ}|j	}t
|tƒrx| d¡}|j}	| t|	d |d ¡p–d	d |d
 ¡ dd¡p®d	|f ¡ q&W d |¡S )Nr   )Ú
FORMATTERSc             S   s   | d S )Nr   r   )r(   r   r   r    r)   ½   r*   z1PygmentsDoc.document_formatters.<locals>.<lambda>)r+   rS   z, r0   r/   rT   r,   z\*r   )Zpygments.formattersrk   rK   rL   rW   r   r   rX   rY   rZ   r\   r]   r^   Ú__name__r>   ÚFMTERDOCr@   rO   )
r   rk   r   rQ   rR   rf   rg   rh   ri   rj   r   r   r    r   ¹   s    


zPygmentsDoc.document_formattersc             C   sv   ddl m} g }xZ| ¡ D ]N\}}| j tj|j j¡ |j	}t
|tƒrR| d¡}| t|j||f ¡ qW d |¡S )Nr   )ÚFILTERSrS   r   )Zpygments.filtersrn   rL   r   r   Úsysre   Ú
__module__rX   rZ   r\   r]   r^   r>   Ú	FILTERDOCrl   r@   )r   rn   r   r$   rh   ri   r   r   r    r   Ë   s    

zPygmentsDoc.document_filtersN)rl   rp   Ú__qualname__rZ   Zhas_contentZrequired_argumentsZoptional_argumentsZfinal_argument_whitespaceZoption_specr!   r   r   r   r   r   r   r   r    r   :   s   <%r   c             C   s   |   dt¡ d S )NZpygmentsdoc)Zadd_directiver   )Zappr   r   r    ÚsetupØ   s    rs   )rZ   ro   Zdocutilsr   Zdocutils.statemachiner   Zdocutils.parsers.rstr   Zsphinx.util.nodesr   rc   rd   rm   rq   r   rs   r   r   r   r    Ú<module>
   s   
	 