ó
	-Pc           @   sö   d  Z  d Z d d l Z d d l Z d e j d k rG e j j ƒ  n  d d l Z d d l m Z d d l Z d d l m	 Z	 m
 Z
 m Z d e j f d	 „  ƒ  YZ d
 e
 j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j j f d „  ƒ  YZ d S(   sv   
Simple document tree Writer, writes Docutils XML according to
http://docutils.sourceforge.net/docs/ref/docutils.dtd.
t   reStructuredTextiÿÿÿÿNt   _xmlplusi    (   t   StringIO(   t   frontendt   writerst   nodest   RawXmlErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyR   "   s    t   Writerc        
   B   sê   e  Z d Z d d d d g i d d 6e j d 6f d d g i d d 6e j d 6f d	 d
 g i d d 6d d 6d d 6e j d 6f d d g i d d 6d d 6d d 6e j d 6f f f Z i d d 6Z d Z d Z	 d Z
 d „  Z d „  Z RS(   t   xmls   "Docutils XML" Writer Optionss1   Generate XML with newlines before and after tags.s
   --newlinest
   store_truet   actiont	   validators'   Generate XML with indents and newlines.s	   --indentss,   Omit the XML declaration.  Use with caution.s   --no-xml-declarationt   xml_declarationt   desti   t   defaultt   store_falses   Omit the DOCTYPE declaration.s   --no-doctypet   doctype_declarationt   xmlcharrefreplacet   output_encoding_error_handlers   docutils_xml writerR   c         C   s   t  j j |  ƒ t |  _ d  S(   N(   R   R	   t   __init__t   XMLTranslatort   translator_class(   t   self(    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyR   D   s    c         C   sB   |  j  |  j ƒ |  _ } |  j j | ƒ d j | j ƒ |  _ d  S(   Nt    (   R   t   documentt   visitort	   walkaboutt   joint   output(   R   R   (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyt	   translateH   s    (   s   xmlN(   s   writers(   R   R   t	   supportedt   NoneR   t   validate_booleant   settings_spect   settings_defaultst   config_sectiont   config_section_dependenciesR   R   R   (    (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyR	   %   s.   	R   c           B   so   e  Z d  Z d Z d Z e j j ƒ  Z e j	 d e
 ƒ d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z RS(
   s$   <?xml version="1.0" encoding="%s"?>
s”   <!DOCTYPE document PUBLIC "+//IDN docutils.sourceforge.net//DTD Docutils Generic//EN//XML" "http://docutils.sourceforge.net/docs/ref/docutils.dtd">
s"   <!-- Generated by Docutils %s -->
s5   http://xml.org/sax/features/external-general-entitiesc         C   s'  t  j j |  | ƒ |  j j j |  _ |  j j j |  _ | j |  _ } d |  _	 |  _
 | j rl d |  _
 n  | j rŠ d |  _
 d |  _	 n  d |  _ d |  _ g  |  _ | j rË |  j j |  j | j ƒ n  | j rê |  j j |  j ƒ n  |  j j |  j t j ƒ t ƒ  |  _ |  j j |  j ƒ d  S(   NR   s   
s       i    (   R   t   NodeVisitorR   R   t   reportert   warningt   warnt   errort   settingst   indentt   newlinet   newlinest   indentst   levelt	   in_simpleR   R   t   appendt   output_encodingR   t   doctypet	   generatort   docutilst   __version__t   TestXmlt
   the_handlet	   xmlparsert   setContentHandler(   R   R   R,   (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyR   ^   s*    									c         C   sž   |  j  s& |  j j |  j |  j ƒ n  |  j j | j t j j j	 ƒ ƒ |  j d 7_ t
 | t j ƒ r{ |  j  d 7_  n  |  j  sš |  j j |  j ƒ n  d S(   s   Default node visit method.i   N(   R2   R   R3   R-   R1   t   starttagR
   t   saxt   saxutilst	   quoteattrt
   isinstanceR   t   TextElementR.   (   R   t   node(    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyt   default_visit€   s    	"	c         C   s’   |  j  d 8_  |  j s5 |  j j |  j |  j  ƒ n  |  j j | j ƒ  ƒ t | t j ƒ ro |  j d 8_ n  |  j sŽ |  j j |  j	 ƒ n  d S(   s   Default node depart method.i   N(
   R1   R2   R   R3   R-   t   endtagRA   R   RB   R.   (   R   RC   (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyt   default_departure‹   s    		c         C   s/   t  j j j | j ƒ  ƒ } |  j j | ƒ d  S(   N(   R
   R>   R?   t   escapet   astextR   R3   (   R   RC   t   text(    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyt
   visit_Textš   s    c         C   s   d  S(   N(    (   R   RC   (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyt   depart_Textž   s    c         C   sg  d | j  d d ƒ j ƒ  k r/ |  j | ƒ d  S|  j | ƒ | j ƒ  } |  j j | ƒ |  j | ƒ t | t ƒ r• t	 j
 d k  r• | j d ƒ } n  y |  j j t | ƒ ƒ Wn¨ t j j j k
 rY} |  j j j ƒ  } |  j j j ƒ  } | j } t | j t j ƒ s| d 7} n  d | | | j ƒ  f } |  j | d | j d	 | | d
 ƒn Xt j ‚ d  S(   NR
   t   formatR   i   t   utf8i   s0   Invalid raw XML in column %d, line offset %d:
%st   sourcet   linei   (   i   (   t   gett   splitRD   RH   R   R3   RF   RA   t   unicodet   syst   version_infot   encodeR;   t   parseR   R
   R>   t   _exceptionst   SAXParseExceptionR:   t   locatort   getColumnNumbert   getLineNumberRO   t   parentR   RB   R*   RN   t   SkipNode(   R   RC   t
   xml_stringR+   t   col_numt   line_numt   srclinet   msg(    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyt	   visit_raw¡   s*    	((   R   R   R   R5   R6   R
   R>   t   make_parserR;   t
   setFeaturet   TrueR   RD   RF   RJ   RK   Rc   (    (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyR   N   s   
	"				R9   c           B   s   e  Z d  „  Z RS(   c         C   s   | |  _  d  S(   N(   RY   (   R   RY   (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyt   setDocumentLocator¿   s    (   R   R   Rg   (    (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyR9   ½   s   (   t   __doc__t   __docformat__RS   R
   t   __path__t   reverset   xml.sax.saxutilsR   R7   R   R   R   t   ApplicationErrorR   R	   t   GenericNodeVisitorR   R>   t   ContentHandlerR9   (    (    (    sA   /usr/lib/python2.7/dist-packages/docutils/writers/docutils_xml.pyt   <module>	   s   
)o