ó
àú\c        	   @   sO  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 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 e rd d l m Z m Z m Z m Z d d l m  Z  d d l! m" Z" n  d d d d d d d d d g	 Z# d e f d „  ƒ  YZ$ d „  Z% d S(   sÛ   
    sphinx.builders.websupport
    ~~~~~~~~~~~~~~~~~~~~~~~~~~

    Builder for the web support package.

    :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
iÿÿÿÿ(   t   pathN(   t   StringOutput(   t   version_info(   t   BuiltinTemplateLoader(   t   os_patht   relative_urit	   ensuredirt   copyfile(   t   PickleHTMLBuilderi   (   t   package_dir(   t   WebSupportTranslator(   t   is_commentable(   t   Anyt   Dictt   Iterablet   Tuple(   t   nodes(   t   Sphinxs   ajax-loader.gifs   comment-bright.pngs   comment-close.pngs   comment.pngs   down-pressed.pngs   down.pngs   up-pressed.pngs   up.pngs   websupport.jst   WebSupportBuilderc           B   sž   e  Z d  Z d Z e Z e Z d „  Z e	 d „  ƒ Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d d	 „ Z d
 d d d „ Z d „  Z d „  Z d „  Z RS(   s7   
    Builds documents for the web support package.
    t
   websupportc         C   sL   t  j |  ƒ |  j ƒ  t |  j t ƒ s8 t d ƒ ‚ n  |  j j d ƒ d  S(   Ns:   websupport builder must be used with the builtin templatess   _static/websupport.js(	   R   t   initt   init_templatest
   isinstancet	   templatesR   t   RuntimeErrort   script_filest   append(   t   self(    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyR   7   s
    
c         C   s   t  d k  r d St Sd  S(   Ni   i    t   commentable(   i   i    (   t   sphinx_versionR   (   R   (    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   versioning_methodC   s    c         C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   t	   staticdirt   virtual_staticdirt   searcht   storage(   R   R   R    R!   R"   (    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   set_webinfoJ   s    			c         C   s!   t  j |  | ƒ t |  j d <d  S(   Nt   no_search_suffix(   R   t   prepare_writingt   Truet   globalcontext(   R   t   docnames(    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyR%   Q   s    c         C   s   t  d d ƒ } |  j | _ |  j j j | i  ƒ |  _ |  j j j | i  ƒ |  _ d t	 j
 |  j |  j ƒ |  _ d t	 j
 |  j d ƒ |  _ | |  _ |  j j | | ƒ |  j j ƒ  |  j j d } |  j j } |  j | | | ƒ } |  j | | d | ƒd  S(   Nt   encodings   utf-8t   /t
   _downloadst   fragmentt	   event_arg(   R   t   docsettingst   settingst   envt   toc_secnumberst   gett
   secnumberst   toc_fignumberst
   fignumberst	   posixpatht   joinR    t   imagedirt   imgpatht   dlpatht   current_docnamet	   docwritert   writet   assemble_partst   partst
   clean_metat   get_doc_contextt   handle_page(   R   t   docnamet   doctreet   destinationt   bodyt   metatagst   ctx(    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt	   write_docV   s    	c         C   sw   d t  j |  j |  j ƒ |  _ |  j | ƒ |  j j j | ƒ } | rZ |  j	 | ƒ d p] d } |  j
 | | | ƒ d  S(   NR*   t   titlet    (   R6   R7   R    R8   R9   t   post_process_imagesR0   t
   longtitlesR2   t   render_partialt
   index_page(   R   RC   RD   RJ   (    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   write_doc_serializedh   s
    c         C   s#   |  j  |  _ |  j j d | ƒ d  S(   Nt   changed(   R!   t   indexert   init_indexing(   R   R(   (    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   load_indexerp   s    c            s‰  ˆ j  j ƒ  } ˆ  | d <t ˆ j ˆ  ƒ ‡ f d † } | | d <‡ f d †  | d <ˆ j j | d <‡  ‡ f d †  | d <ˆ j ˆ  | ƒ | j | ƒ ˆ j j	 d	 ˆ  | | | ƒ } | rÄ | } n  i | j
 d
 d ƒ d
 6| j
 d d ƒ d 6| j
 d d ƒ d 6| j
 d d ƒ d 6} ˆ j j j | ƒ }	 |	 j | ƒ }
 xB d d d d g D]. } t |
 | ƒ rMt |
 | ƒ ƒ  | | <qMqMW| | f S(   Nt   pagenamec            sY   | r d |  k r |  S| s> ˆ  j  |  ƒ }  t | |  ƒ p= d Sd t j ˆ  j |  ƒ Sd  S(   Ns   ://t   #R*   (   t   get_target_uriR   R6   R7   R    (   t   otherurit   resourcet   baseuri(   R   (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   pathto}   s    R[   c            s   |  ˆ  j  j k S(   N(   R0   t   all_docs(   t   name(   R   (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   <lambda>ˆ   RK   t   hasdocR)   c             s   ˆ j  ˆ  |   S(   N(   t   _get_local_toctree(   t   kw(   RU   R   (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyR^   Š   RK   t   toctrees   html-page-contextRF   RK   RJ   t   csst   scriptt   sidebart   relbar(   R'   t   copyt   FalseRW   t   configt   html_output_encodingt   add_sidebarst   updatet   appt   emit_firstresultR2   R   t   environmentt   get_templatet   make_modulet   hasattrt   getattr(   R   RU   t   addctxt   templatenameR-   RH   R[   t   newtmplt   doc_ctxt   templatet   template_modulet   item(    (   RU   R   s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   _render_pageu   s2    
	
	s	   page.htmlc   	      C   sÓ   |  j  | | | | ƒ \ } } | sL t j |  j d t | ƒ |  j ƒ } n  t t j | ƒ ƒ |  j | | ƒ | j	 d ƒ rÏ t j |  j
 d t | d ƒ ƒ } t t j | ƒ ƒ t |  j j | ƒ | ƒ n  d  S(   Nt   picklest
   sourcenamet   _sources(   R{   R    R7   t   outdirR   t
   out_suffixR   t   dirnamet   dump_contextR2   R   R   R0   t   doc2path(	   R   RU   Rt   Ru   t   outfilenameR-   RH   Rw   t   source_name(    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyRB   £   s    c         C   sã   |  j  d i  d ƒ \ } } | d |  j d <| d |  j d <t j |  ƒ |  j d g } xy | D]q } t j |  j | ƒ } t j |  j | ƒ } t j	 | ƒ r` t j	 | ƒ r¾ t
 j | ƒ n  t
 j | | ƒ q` q` W|  j ƒ  d  S(   Nt   tmps	   page.htmlRc   Rd   t   _static(   R{   R'   R   t   handle_finishR8   R    R7   R   R   t   isdirt   shutilt   rmtreet   movet   copy_resources(   R   t   _Rw   t   directoriest	   directoryt   srct   dst(    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyRˆ   ·   s    c         C   sa   t  j |  j d ƒ } t  j | ƒ r] x6 t D]+ } t  j t d | ƒ } t j | | ƒ q+ Wn  d  S(   NR‡   t   files(   R    R7   R   R‰   t	   RESOURCESR	   RŠ   Rg   (   R   R’   RY   R‘   (    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyR   Ë   s
    c         C   s   |  j  j ƒ  d  S(   N(   RR   t   finish_indexing(   R   (    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   dump_search_indexÕ   s    N(   t   __name__t
   __module__t   __doc__R]   R
   t   default_translator_classR&   t   versioning_compareR   t   propertyR   R#   R%   RI   RP   RT   t   NoneR{   RB   Rˆ   R   R–   (    (    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyR   /   s"   						.		
c         C   s5   t  d k r |  j t ƒ n  i d d 6t d 6t d 6S(   Ni   i    t   builtint   versiont   parallel_read_safet   parallel_write_safe(   i   i    (   R   t   add_builderR   R&   (   Rm   (    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   setupÚ   s    (&   R™   t   osR    R6   RŠ   t   docutils.ioR   t   sphinxR   R   t   sphinx.jinja2glueR   t   sphinx.util.osutilR   R   R   R   t   sphinx.builders.htmlR   RK   R	   t   writerR
   t   utilsR   Rh   t   typingR   R   R   R   t   docutilsR   t   sphinx.applicationR   R”   R   R£   (    (    (    s?   lib/python2.7/site-packages/sphinxcontrib/websupport/builder.pyt   <module>
   s4   ""	«