Ñò
ìçKc           @   so  d  Z  d d k Z d d k l Z d d k l Z d d k l Z d d k l	 Z	 d d k
 l Z y( d d k Z d d k Z d d k Z Wn e j
 o e Z n Xe Z d „  Z d	 „  Z d d
 „ Z h d d 6d d 6d d 6d d 6d d 6Z d „  Z d d d „ Z e oY e i i i i d e ƒ d e i i i _ x+ e i  ƒ  D] \ Z! Z" e e! e" ƒ qJWn d S(   sB   Misc. utility functions/classes for admin documentation generator.iÿÿÿÿN(   t   HeaderParser(   t   HeaderParseError(   t	   mark_safe(   t   reverse(   t	   smart_strc      	   C   sÎ   |  p |  i  ƒ  o d S|  i ƒ  i ƒ  } t g  } | D]4 } | i ƒ  o! | t | ƒ t | i ƒ  ƒ q; q; ~ ƒ } | d i ƒ  g g  } | d D] } | | | i ƒ  qš ~ } d i | ƒ i  ƒ  S(   sœ   
    Uniformly trims leading/trailing whitespace from docstrings.

    Based on http://www.python.org/peps/pep-0257.html#handling-docstring-indentation
    t    i    i   s   
(   t   stript
   expandtabst
   splitlinest   mint   lstript   lent   rstript   join(   t	   docstringt   linest   _[1]t   linet   indentt   _[2]t   trimmed(    (    sH   /usr/local/lib/python2.6/dist-packages/django/contrib/admindocs/utils.pyt   trim_docstring   s    N@c         C   sí   t  |  ƒ }  t i d |  ƒ } | d } t | ƒ d j o d } h  } n– t ƒ  } y | i | d ƒ } Wn, t j
 o  h  } d i | d ƒ } nH Xt | i	 ƒ  ƒ } | o d i | d d !ƒ } n d i | d ƒ } | | | f S(   sO   
    Parse out the parts of a docstring.  Returns (title, body, metadata).
    s   \n{2,}i    i   R   iÿÿÿÿs   

(
   R   t   ret   splitR   R    t   parsestrR   R   t   dictt   items(   R   t   partst   titlet   bodyt   metadatat   parser(    (    sH   /usr/local/lib/python2.6/dist-packages/django/contrib/admindocs/utils.pyt   parse_docstring    s"    

	c      
   C   s„   h t  d 6d d 6| d 6t d ƒ i d ƒ d 6} | o t d | ƒ } n t i i |  d	 | d
 d d d d | ƒ} t | d ƒ S(   s<   
    Convert the string from reST to an XHTML fragment.
    t   doctitle_xformi   t   inital_header_levelt   default_reference_contexts   django-admindocs-docroott   /t	   link_bases   <%s>t   source_patht   destination_patht   writer_namet   htmlt   settings_overridest   fragmentN(	   t   TrueR   R   R   t   docutilst   coret   publish_partst   NoneR   (   t   textR#   t   thing_being_parsedt	   overridesR   (    (    sH   /usr/local/lib/python2.6/dist-packages/django/contrib/admindocs/utils.pyt	   parse_rst9   s    	s   %s/models/%s/t   models   %s/views/%s/t   views   %s/templates/%s/t   templates   %s/filters/#%st   filters   %s/tags/#%st   tagc            s2   d  d  ‡  f d † } t i i i i |  | ƒ d  S(   Nc            sr   | d  j o
 h  } n | d  j o
 g  } n t i i | | d ˆ  | i i i | i ƒ  f | } | g g  f S(   Nt   refuri(   R0   R-   t   nodest	   referencet   documentt   settingsR%   t   lower(   t   namet   rawtextR1   t   linenot   inlinert   optionst   contentt   node(   t   urlbase(    sH   /usr/local/lib/python2.6/dist-packages/django/contrib/admindocs/utils.pyt   _roleV   s     
 
7(   R0   R-   t   parserst   rstt   rolest   register_canonical_role(   t   rolenameRG   RH   (    (   RG   sH   /usr/local/lib/python2.6/dist-packages/django/contrib/admindocs/utils.pyt   create_reference_roleU   s    c   	      C   s…   | d  j o
 h  } n | d  j o
 g  } n | i i i } t i i | | d t | | i i i | i	 ƒ  f | } | g g  f S(   NR:   (
   R0   R=   R>   R#   R-   R;   R<   t   ROLESR%   R?   (	   R@   RA   R1   RB   RC   RD   RE   t   contextRF   (    (    sH   /usr/local/lib/python2.6/dist-packages/django/contrib/admindocs/utils.pyt   default_reference_role]   s     
 
;t   cmsreference(#   t   __doc__R   t   email.ParserR    t   email.ErrorsR   t   django.utils.safestringR   t   django.core.urlresolversR   t   django.utils.encodingR   t   docutils.coreR-   t   docutils.nodest   docutils.parsers.rst.rolest   ImportErrort   Falset   docutils_is_availableR,   R   R    R0   R4   RO   RN   RQ   RI   RJ   RK   RL   t   DEFAULT_INTERPRETED_ROLER   R@   RG   (    (    (    sH   /usr/local/lib/python2.6/dist-packages/django/contrib/admindocs/utils.pyt   <module>   s<   		
	 