U
    YSh)                     @   sT  d Z ddlZddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZ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 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! ddl"m#Z# ddl$m%Z% e&e'Z(e)e*e+Z,ee'dZ-e.dZ/dZ0e1ee1dddZ2G dd deZ3eee1ef dddZ4dS )z
    sphinxcontrib.qthelp
    ~~~~~~~~~~~~~~~~~~~~

    Build input files for the Qt collection generator.

    :copyright: Copyright 2007-2019 by the Sphinx team, see README.
    :license: BSD, see LICENSE for details.
    N)path)AnyDictIterableListTuplecast)nodes)Node)addnodes)Sphinx)StandaloneHTMLBuilder)IndexEntries)get_translation)logging)NodeMatcher)
canon_pathmake_filename)SphinxRenderer)__version__consolezB(?P<title>.+) (\((class in )?(?P<id>[\w\.]+)( (?P<descr>\w+))?\))$z*<section title="%(title)s" ref="%(ref)s"/>)filenamekwargsreturnc                 K   s   t td| }t||S )NZ	templates)r   joinpackage_dirr   Zrender_from_file)r   r   pathname r   P/root/rtd-docs/venv/lib/python3.8/site-packages/sphinxcontrib/qthelp/__init__.pyrender_file.   s    r   c                       s   e Zd ZdZdZedZdZddddgZdZ	d	Z
dZdZd
d fddZeeef dddZd
dddZeed
dddZeedddZd%eeee dddZeeedddZeee eee dd d!Zeee d"d#d$Z  ZS )&QtHelpBuilderzN
    Builder that also outputs Qt help project, contents and index files.
    ZqthelpzYou can now run "qcollectiongenerator" with the .qhcp project file in %(outdir)s, like this:
$ qcollectiongenerator %(outdir)s/%(project)s.qhcp
To view the help file:
$ assistant -collectionFile %(outdir)s/%(project)s.qhcFzimage/svg+xmlz	image/pngz	image/gifz
image/jpegTN)r   c                    s   t    d| _d| _d S )N.html)superinitZ
out_suffixZlink_suffixself	__class__r   r   r#   N   s    
zQtHelpBuilder.initc                 C   s   | j j| j jfS N)configqthelp_themeqthelp_theme_optionsr$   r   r   r   get_theme_configU   s    zQtHelpBuilder.get_theme_configc                 C   s   |  | j| jj d S r(   )	build_qhpoutdirr)   qthelp_basenamer$   r   r   r   handle_finishX   s    zQtHelpBuilder.handle_finish)r.   outnamer   c                 C   s$  t td | jj| jj| dd}g }ttj	dd}|
|D ]}|| | q@| jD ].\}}}	}
t|jd| d }|d|  q\d	|}g }t| jj| dd
}|D ]0\}}|D ]"\}\}}}|| ||| qqd	|}| jjr| jj}nd|| jjf }tdd|}tdd|d}| }tt||d dddB}td|| jj| jj| jj|| jj|||  |d
}|!| W 5 Q R X dt"|d| #| jj }dt"|dd }t td tt||d ddd&}td|| jj$||d}|!| W 5 Q R X d S )Nzwriting project file...F)Zprune_toctreesT)Ztoctreez%s.htmltitlerefz                
)Zgroup_entrieszorg.sphinx.%s.%sz[^a-zA-Z0-9.\-] z\.+.z.qhpwzutf-8)encodingzproject.qhp)	r1   r3   versionproject	namespace
master_docsectionskeywordsfilesz	qthelp://docz
index.htmlz"writing collection project file...z.qhcpzproject.qhcp)r1   r3   homepage	startpage)%loggerinfo__envZget_and_resolve_doctreer)   r=   r   r   compact_paragraphtraverseextend	write_tocZdomain_indicessection_template	localnameappendr   r   Zcreate_indexbuild_keywordsqthelp_namespacer:   resubstriploweropenr   r   Z
html_titler;   get_project_fileswrite	posixpathZget_target_uriZhtml_short_title)r%   r.   r1   Ztocdocr>   ZmatchernodeZ	indexnameZindexclscontentZcollapseitemr?   indexkeygroupr3   refssubitemskey_ZnspacefbodyrB   rC   r   r   r   r-   [   sh    



      zQtHelpBuilder.build_qhp)rY   r   c                 C   sf   t |tjsdS t|jdkr"dS t |d tjs6dS t |d d tjsNdS t |d tjsbdS dS )NF   r      T)	
isinstancer	   	list_itemlenchildrenr   rH   	referencebullet_list)r%   rY   r   r   r   	isdocnode   s    zQtHelpBuilder.isdocnode   )rY   indentlevelr   c                 C   s  g }t |tjr| |rttj|d }ttj|d }|d }t	|
 dd}d||d }|d| |  ttj|d }	tttj |	}
|
D ]}|| ||d  q|d| d	  nt |tjr|D ]}|| || qnt |tjrT|d }t	|
 dd}t||d }d| | }||d
d  nZt |tjr|D ]}|| || qfn,t |tjr|D ]}|| || q|S )Nr   Zrefuri"z&quot;z)<section title="%(title)s" ref="%(ref)s">r2   z    re   z
</section>asciixmlcharrefreplace)rf   r	   rg   rl   r   r   rH   rj   htmlescapeZastextreplacerN   rk   r   rJ   rK   rL   encodedecode)r%   rY   rn   partsrH   rj   linkr3   r[   rk   Z
list_itemsrg   Zsubnoder   r   r   rK      s>    zQtHelpBuilder.write_toc)namer4   r   c           
      C   s   t |}|rT| }|d }|d}|dr>|d d }td||f d}nd }tj|dd}tj|d dd}|rd	d
|||f  }	nd	d||f  }	|	dd |	S )Nr3   idz()z%s.%sT)quotere   z            z%<keyword name="%s" id="%s" ref="%s"/>z<keyword name="%s" ref="%s"/>rp   rq   )
_idpatternmatch	groupdictgetendswithrr   rs   ru   )
r%   ry   r4   Zmatchobjr   	shortnamerz   ZnameattrZrefattrr[   r   r   r   keyword_item   s     


zQtHelpBuilder.keyword_item)r3   r_   r`   r   c                 C   s   g }t |dkr(|| ||d  n0t |dkrXt|D ]\}}|| || q<|r|D ] }|| |d |d g  q`|S )Nre   r   )rh   rN   r   	enumeraterJ   rO   )r%   r3   r_   r`   r?   ir4   subitemr   r   r   rO      s    zQtHelpBuilder.build_keywords)r.   r   c                 C   s   | tjs|tj7 }t|}g }t|d}t|| j}t|D ]`\}}}|||f}	t	|D ]>}
|	rx|
 dr|
 drft||
|d  }|
t| qfqF|S )NZ_staticz.jsr!   )r   osseprh   r   r   Zimagedirwalk
startswithsortedrN   r   )r%   r.   ZolenZproject_filesZ	staticdirZ	imagesdirrootdirsr@   Zresourcedirfnr   r   r   r   rV      s    
zQtHelpBuilder.get_project_files)rm   )__name__
__module____qualname____doc__ry   rF   epilogZ
copysourceZsupported_image_typesZadd_permalinksZembeddedZdownload_supportsearchr#   r   strr   r,   r0   r-   r
   boolrl   intr   rK   r   r   rO   rV   __classcell__r   r   r&   r   r    3   s(   ;"r    )appr   c                 C   st   |  d | t | tttd | ddd d | dd dt	g | dd	d | d
i d t
dddS )Nzsphinx.builders.htmlZlocalesr/   c                 S   s
   t | jS r(   )r   r;   r$   r   r   r   <lambda>      zsetup.<locals>.<lambda>rr   rP   r*   Znonavr+   T)r:   Zparallel_read_safeZparallel_write_safe)Zsetup_extensionZadd_builderr    Zadd_message_catalogr   r   r   r   Zadd_config_valuer   r   )r   r   r   r   setup  s    

r   )5r   rr   r   rX   rQ   r   typingr   r   r   r   r   r   Zdocutilsr	   Zdocutils.nodesr
   Zsphinxr   Zsphinx.applicationr   Zsphinx.builders.htmlr   Z(sphinx.environment.adapters.indexentriesr   Zsphinx.localer   Zsphinx.utilr   Zsphinx.util.nodesr   Zsphinx.util.osutilr   r   Zsphinx.util.templater   Zsphinxcontrib.qthelp.versionr   	getLoggerr   rD   abspathdirname__file__r   rF   compiler}   rL   r   r   r    r   r   r   r   r   <module>   s:   
 

 P