ó
…¥¡Lc           @   sk   d  Z  d Z d d l m Z m Z m Z d e f d „  ƒ  YZ d d d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 S(   s¨  
This package contains modules for standard tree transforms available
to Docutils components. Tree transforms serve a variety of purposes:

- To tie up certain syntax-specific "loose ends" that remain after the
  initial parsing of the input plaintext. These transforms are used to
  supplement a limited syntax.

- To automate the internal linking of the document tree (hyperlink
  references, footnote references, etc.).

- To extract useful information from the document tree. These
  transforms may be used to construct (for example) indexes and tables
  of contents.

Each transform is an optional step that a Docutils component may
choose to perform on the parsed document.
t   reStructuredTextiÿÿÿÿ(   t	   languagest   ApplicationErrort   TransformSpect   TransformErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyR      s    t	   Transformc           B   s)   e  Z d  Z d Z d d „ Z d „  Z RS(   s;   
    Docutils transform component abstract base class.
    c         C   s4   | |  _  | |  _ t j | j j | j ƒ |  _ d S(   sA   
        Initial setup for in-place document transforms.
        N(   t   documentt	   startnodeR   t   get_languaget   settingst   language_codet   reportert   language(   t   selfR   R	   (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyt   __init__*   s
    		c         K   s   t  d ƒ ‚ d S(   s5   Override to apply the transform to the document tree.s"   subclass must override this methodN(   t   NotImplementedError(   R   t   kwargs(    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyt   apply;   s    N(   R   R   t   __doc__t   Nonet   default_priorityR   R   (    (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyR   !   s   t   Transformerc           B   sS   e  Z d  Z d „  Z d d „ Z d „  Z d d „ Z d „  Z d „  Z	 d „  Z
 RS(	   s‘   
    Stores transforms (`Transform` classes) and applies them to document
    trees.  Also keeps track of components by component type name.
    c         C   sC   g  |  _  g  |  _ | |  _ g  |  _ d |  _ i  |  _ d |  _ d  S(   Ni    (   t
   transformst   unknown_reference_resolversR   t   appliedt   sortedt
   componentst   serialno(   R   R   (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyR   G   s    							c         K   sP   | d k r | j } n  |  j | ƒ } |  j j | | d | f ƒ d |  _ d S(   s+  
        Store a single transform.  Use `priority` to override the default.
        `kwargs` is a dictionary whose contents are passed as keyword
        arguments to the `apply` method of the transform.  This can be used to
        pass application-specific data to the transform instance.
        i    N(   R   R   t   get_priority_stringR   t   appendR   (   R   t   transform_classt   priorityR   t   priority_string(    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyt   add_transform`   s    	c         C   sL   x< | D]4 } |  j  | j ƒ } |  j j | | d i  f ƒ q Wd |  _ d S(   s3   Store multiple transforms, with default priorities.i    N(   R   R   R   R   R   R   (   R   t   transform_listR    R"   (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyt   add_transformsn   s    	c         C   sY   | j  } | d k r! | j } n  |  j | ƒ } |  j j | | | i  f ƒ d |  _ d S(   s4   Store a transform with an associated `pending` node.i    N(   t	   transformR   R   R   R   R   R   (   R   t   pendingR!   R    R"   (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyt   add_pendingw   s    		c         C   s    |  j  d 7_  d | |  j  f S(   s”   
        Return a string, `priority` combined with `self.serialno`.

        This ensures FIFO order on transforms with identical priority.
        i   s	   %03d-%03d(   R   (   R   R!   (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyR      s    c         C   sÍ   xC | D]; } | d k r q n  |  j | j ƒ  ƒ | |  j | j <q Wd |  _ g  } x | D] } | j | j ƒ q\ Wg  | D] } | j | f ^ q} } | j	 ƒ  |  j j g  | D] } | d ^ q² ƒ d S(   s    
        Store each component's default transforms, with default priorities.
        Also, store components by type name in a mapping for later lookup.
        i    i   N(
   R   R%   t   get_transformsR   t   component_typeR   t   extendR   R!   t   sort(   R   R   t	   componentR   t   it   ft   decorated_list(    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyt   populate_from_componentsŠ   s    	"
c         C   sµ   |  j  j j |  j  j ƒ x• |  j r° |  j sT |  j j ƒ  |  j j ƒ  d |  _ n  |  j j ƒ  \ } } } } | |  j  d | ƒ} | j	 |   |  j
 j | | | | f ƒ q Wd S(   s6   Apply all of the stored transforms, in priority order.i   R	   N(   R   R   t   attach_observert   note_transform_messageR   R   R,   t   reverset   popR   R   R   (   R   R!   R    R'   R   R&   (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyt   apply_transformsŸ   s    	N(   R   R   R   R   R   R#   R%   R(   R   R1   R6   (    (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyR   @   s   			
			N(    (	   R   t   __docformat__t   docutilsR   R   R   R   R   R   (    (    (    s@   /usr/lib/python2.7/dist-packages/docutils/transforms/__init__.pyt   <module>   s
   