B
    \	2                 @   s   d Z ddlmZ ddl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 dd
lmZ ddlmZ ddlmZ ddlmZ eeZdZdZdZdZd Z 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/d0Z!d7d1d2Z"G d3d4 d4eZ#d5d6 Z$dS )8a  
    sphinx.builders.htmlhelp
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Build HTML help support files.
    Parts adapted from Python's Doc/tools/prechm.py.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )print_functionN)path)nodes)PY3)addnodes)StandaloneHTMLBuilder)IndexEntries)__)logging)make_filename)
htmlescapea  [OPTIONS]
Binary TOC=No
Binary Index=No
Compiled file=%(outname)s.chm
Contents file=%(outname)s.hhc
Default Window=%(outname)s
Default topic=%(master_doc)s
Display compile progress=No
Full text search stop list file=%(outname)s.stp
Full-text search=Yes
Index file=%(outname)s.hhk
Language=%(lcid)#x
Title=%(title)s

[WINDOWS]
%(outname)s="%(title)s","%(outname)s.hhc","%(outname)s.hhk","%(master_doc)s","%(master_doc)s",,,,,0x63520,220,0x10384e,[0,0,1024,768],,,,,,,0

[FILES]
aB  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<OBJECT type="text/site properties">
        <param name="Window Styles" value="0x801227">
        <param name="ImageType" value="Folder">
</OBJECT>
<UL>
z</UL></BODY></HTML>
zn<OBJECT type="text/sitemap">
    <param name="Name" value="%s">
    <param name="Local" value="%s">
</OBJECT>
z
a  and  are  as  at
be  but  by
for
if  in  into  is  it
near  no  not
of  on  or
such
that  the  their  then  there  these  they  this  to
was  will  with
)i  cp1252)i  cp1250)i  r   )i  r   )i	  r   )i
  r   )i%  cp1257)i)  cp1256)i  r   )i  r   )i  r   )i  r   )i  r   )i  cp932)i  cp949)i'  r   )i&  r   )i  r   )i  r   )i  r   )i  r   )i  cp1251)i  r   )i$  r   )i  r   )i  cp1254)i"  r   )i  cp936)i  cp950)ZcaZcsZdaZdeZenZesZetZfaZfifrZhrZhuitZjaZkoltZlvnlZno_NBZplZpt_BRZruZskZslZsvZtrZuk_UAZzh_CNZzh_TWc             C   s&   |dkrt }t| |} | dd} | S )a5  
    chm_htmlescape() is a wrapper of html.escape().
    .hhc/.hhk files don't recognize hex escaping, we need convert
    hex escaping to decimal escaping. for example: ``&#x27;`` -> ``&#39;``
    html.escape() may generates a hex escaping ``&#x27;`` for single
    quote ``'``, this wrapper fixes this.
    Nz&#x27;z&#39;)r   r   replace)sZquote r   7lib/python3.7/site-packages/sphinx/builders/htmlhelp.pychm_htmlescape   s
    	
r   c               @   sp   e Zd ZdZdZedZdZdddgZdZ	dZ
dZd	Zd
Zdd ZdddZdd Zdd Zdd Zdd ZdS )HTMLHelpBuilderz
    Builder that also outputs Windows HTML help project, contents and
    index files.  Adapted from the original Doc/tools/prechm.py.
    ZhtmlhelpzDYou can now run HTML Help Workshop with the .htp file in %(outdir)s.Fz	image/pngz	image/gifz
image/jpegTi	  r   c             C   s<   t |  d| _d| _t| jj}|d k	r8|\| _| _	d S )Nz.html)
r   init
out_suffixZlink_suffixchm_localesgetconfigZlanguagelcidencoding)selfZlocaler   r   r   r!      s    
zHTMLHelpBuilder.initwc             C   s   t t|||| jdS )Nxmlcharrefreplace)codecsopenr   joinr'   )r(   outdirbasenamemoder   r   r   	open_file   s    zHTMLHelpBuilder.open_filec             C   s   | j |d< d S )Nr'   )r'   )r(   ZpagenameZtemplatenameZctxZ	event_argr   r   r   update_page_context   s    z#HTMLHelpBuilder.update_page_contextc             C   s   |  | j| jj d S )N)	build_hhxr.   r%   htmlhelp_basename)r(   r   r   r   handle_finish   s    zHTMLHelpBuilder.handle_finishc             C   sF   x2| tjD ]"}|dd krd|krd|d< qW t| || d S )NZinternalrefuriZ_blanktarget)traverser   	referencer$   r   	write_doc)r(   ZdocnameZdoctreenoder   r   r   r:      s    zHTMLHelpBuilder.write_docc                s  t td | ||d $ xttD ]}t| d q*W W d Q R X t td | ||d   t|| j	j
| j	j| j	j| j| j	j| j d  |tjs|tj7 }t|}xt|D ]\}}}|  |  |t|d}xRt|D ]F}	|r|	dr|	d	rtt||	|d  tjd
 d qW qW W d Q R X t td | ||d   t  dt| j	j| j	j| j f   x4| jD ]*\}
}}} dt|jd|
 f   qW | jj | j	j| dd}d fdd	dd }x|!|D ]}| qW  t" W d Q R X t td t#| j$| }| ||d b  d  fddx8|D ]0\}}x$|D ]\}\}}}||| qW qW  d W d Q R X d S )Nzdumping stopword list...z.stp)filezwriting project file...z.hhp)outnametitleversionprojectr&   
master_docZ_staticz.jsz.html\zwriting TOC file...z.hhcz<LI> z%s.htmlF)Zprune_toctreesr   c                s   t | tjr0 d x| D ]}|| qW nt | tjrf| d }t|  d} t||f  nrt | tjr|dkr d x| D ]}||d  qW |dkr؈ d n$t | t	j
rx| D ]}|| qW d S )Nz<LI> r6   Tr   z<UL>
   z</UL>
)
isinstancer   Z	list_itemwriter9   r   Zastextobject_sitemapZbullet_listr   compact_paragraph)r;   ZullevelZsubnodelinkr>   )f	write_tocr   r   rJ   #  s$    




z,HTMLHelpBuilder.build_hhx.<locals>.write_tocc             S   s   t | tjod| kS )NZtoctree)rD   r   rG   )r;   r   r   r   	istoctree8  s    z,HTMLHelpBuilder.build_hhx.<locals>.istoctreezwriting index file...z.hhkz<UL>
c                s    fdd}t | d}  d |d|  t|dkrB|d|  nZt|dkrb|d	|d d  n:x8t|D ],\}}|d
d||d f  |d	|d  qlW  d |r d x |D ]}|d |d g  qW  d d S )Nc                s   d| |f }  | d S )Nz!    <param name="%s" value="%s">
)rE   )namevalueitem)rI   r   r   write_paramG  s    zCHTMLHelpBuilder.build_hhx.<locals>.write_index.<locals>.write_paramTz"<LI> <OBJECT type="text/sitemap">
ZKeywordr   zSee AlsorC   ZLocalNamez[%d] %sz
</OBJECT>
z<UL> z</UL>)r   rE   len	enumerate)r>   refssubitemsrO   irefZsubitem)rI   write_indexr   r   rW   E  s"    





z.HTMLHelpBuilder.build_hhx.<locals>.write_indexz</UL>
)r   )%loggerinfor	   r1   sorted	stopwordsprintrE   project_templater%   Z
html_titler?   r@   r&   rA   r"   endswithosseprQ   walksort
startswithr   r-   r   contents_headerrF   Zhtml_short_titleZdomain_indicesZ	localnameenvZget_and_resolve_doctreer8   contents_footerr   Zcreate_index)r(   r.   r=   ZwordZolenrootdirsfilesZ	staticdirfnZ	indexnameZindexclsZcontentZcollapseZtocdocrK   r;   indexkeygroupr>   rS   rT   Zkey_r   )rI   rW   rJ   r   r3      sb    



zHTMLHelpBuilder.build_hhxN)r)   )__name__
__module____qualname____doc__rL   r	   ZepilogZ
copysourceZsupported_image_typesZadd_permalinksZembeddedsearchr&   r'   r!   r1   r2   r5   r:   r3   r   r   r   r   r       s    

	r    c             C   s2   |  d | t | ddd d  ddddS )Nzsphinx.builders.htmlr4   c             S   s
   t | jS )N)r   r@   )r(   r   r   r   <lambda>h  s    zsetup.<locals>.<lambda>ZbuiltinT)r?   Zparallel_read_safeZparallel_write_safe)Zsetup_extensionZadd_builderr    Zadd_config_value)Zappr   r   r   setupc  s    

rt   )N)%rq   Z
__future__r   r+   r_   r   Zdocutilsr   Zsixr   Zsphinxr   Zsphinx.builders.htmlr   Z(sphinx.environment.adapters.indexentriesr   Zsphinx.localer	   Zsphinx.utilr
   Zsphinx.util.osutilr   Zsphinx.util.pycompatr   Z	getLoggerrn   rX   r]   rd   rf   rF   splitr[   r#   r   r    rt   r   r   r   r   <module>   sh   
9
 &