σ
φΐ\c           @@  sN  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 y d d l j j Z Wn  e k
 rζ d d l j Z n Xe rd d l m Z m Z m Z d d l m  Z  n  e j! e"  Z# d e f d     YZ$ d   Z% d S(   s  
    sphinx.builders.devhelp
    ~~~~~~~~~~~~~~~~~~~~~~~

    Build HTML documentation and Devhelp_ support files.

    .. _Devhelp: https://wiki.gnome.org/Apps/Devhelp

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
i    (   t   absolute_importN(   t   path(   t   nodes(   t   addnodes(   t   StandaloneHTMLBuilder(   t   IndexEntries(   t   __(   t   logging(   t   make_filename(   t   Anyt   Dictt   List(   t   Sphinxt   DevhelpBuilderc           B@  s\   e  Z d  Z d Z e d  Z e Z d d d g Z e Z	 e
 Z d   Z d   Z d   Z RS(	   s7   
    Builder that also outputs GNOME Devhelp file.
    t   devhelps   To view the help file:
$ mkdir -p $HOME/.local/share/devhelp/books
$ ln -s $PWD/%(outdir)s $HOME/.local/share/devhelp/books/%(project)s
$ devhelps	   image/pngs	   image/gifs
   image/jpegc         C@  s#   t  j |   d |  _ d |  _ d  S(   Ns   .html(   R   t   initt
   out_suffixt   link_suffix(   t   self(    (    s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyR   =   s    	c         C@  s   |  j  |  j |  j j  d  S(   N(   t   build_devhelpt   outdirt   configt   devhelp_basename(   R   (    (    s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyt   handle_finishC   s    c      
   @  s  t  j t d   t j d d |  j j d |  j j d d d |  j j } t j	 |  } t j
 | d  } |  j j |  j j |  d	 t }  f d
    d   } x$ | j |  D] }  | |  qΆ Wt j
 | d    t |  j  j |   }	    f d    xD |	 D]< \ }
 } x- | D]% \ } \ } } }
  | | |  q#WqWt j | | d  } t j | d   } | j | d  Wd  QXd  S(   Ns   dumping devhelp index...t   bookt   titlet   namet   links
   index.htmlt   versiont   chapterst   prune_toctreesc         @  sΗ   t  |  t j  s$ t  |  t j  rE x |  D] }   | |  q+ Wn~ t  |  t j  r t j | d  } xW |  D] }   | |  qp Wn9 t  |  t j  rΓ |  d | j	 d <|  j
   | j	 d <n  d  S(   Nt   subt   refuriR   R   (   t
   isinstanceR   t   compact_paragraphR   t   bullet_listt	   list_itemt   etreet
   SubElementt	   referencet   attribt   astext(   t   nodet   parentt   subnodet   item(   t	   write_toc(    s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyR.   Y   s    c         S@  s   t  |  t j  o d |  k S(   Nt   toctree(   R!   R   R"   (   R*   (    (    s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyt	   istoctreeg   s    t	   functionsc      	   @  sκ   t  |  d k r n t  |  d k rN t j   d d |  d | d d nG xD t |  D]6 \ } } t j   d d d | |  f d | d q[ W| rζ t j d d |   } x3 | D]( }  d	 | | d f | d g   q· Wn  d  S(
   Ni    i   t   functionR   R   s   [%d] %ss   \s*\(.*\)\s*$t    s   %s %s(   t   lenR%   R&   t	   enumeratet   reR   (   R   t   refst   subitemst   it   reft   parent_titlet   subitem(   R1   t   write_index(    s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyR=   s   s    s   .devhelp.gzt   ws   utf-8(   t   loggert   infoR   R%   t   ElementR   t
   html_titlet   projectR   t   ElementTreeR&   t   envt   get_and_resolve_doctreet
   master_doct   Falset   traverseR   t   create_indexR   t   joint   gzipt   opent   write(   R   R   t   outnamet   roott   treeR   t   tocdocR0   R*   t   indext   keyt   groupR   R7   R8   t   xmlfilet   f(    (   R1   R=   R.   s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyR   G   s.    		(   t   __name__t
   __module__t   __doc__R   R   t   epilogRH   t
   copysourcet   supported_image_typest   add_permalinkst   Truet   embeddedR   R   R   (    (    (    s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyR   *   s   		c         C@  sI   |  j  d  |  j t  |  j d d   d   i d d 6t d 6t d 6S(   Ns   sphinx.builders.htmlR   c         S@  s   t  |  j  S(   N(   R   RC   (   R   (    (    s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyt   <lambda>   s    t   builtinR   t   parallel_read_safet   parallel_write_safe(   t   setup_extensiont   add_builderR   t   add_config_valuet   NoneR_   (   t   app(    (    s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyt   setup   s    (&   RZ   t
   __future__R    RL   R6   t   osR   t   docutilsR   t   sphinxR   t   sphinx.builders.htmlR   t(   sphinx.environment.adapters.indexentriesR   t   sphinx.localeR   t   sphinx.utilR   t   sphinx.util.osutilR   t   xml.etree.ElementTreeR%   RD   t   ImportErrort
   lxml.etreeRH   t   typingR	   R
   R   t   sphinx.applicationR   t	   getLoggerRX   R?   R   Rj   (    (    (    s6   lib/python2.7/site-packages/sphinx/builders/devhelp.pyt   <module>   s*   f