ó
¡V]c           @   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 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__(    (    (    s<   lib/python2.7/site-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(    (    s<   lib/python2.7/site-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   (    (    s<   lib/python2.7/site-packages/docutils/writers/docutils_xml.pyt	   translateH   s    (   R
   N(   R   (   R   R   t	   supportedt   NoneR   t   validate_booleant   settings_spect   settings_defaultst   config_sectiont   config_section_dependenciesR   R   R   (    (    (    s<   lib/python2.7/site-packages/docutils/writers/docutils_xml.pyR	   %   s.   	R   c           B   s   e  Z d  Z d Z d Z e j j ƒ  Z e j	 d e
 ƒ d „  Z e j e j e j e j f 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   s0  t  j j |  | ƒ |  j j j |  _ |  j j j |  _ | j |  _ } d |  _	 |  _
 | j rl d |  _
 n  | j rŠ d |  _
 d |  _	 n  d |  _ 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_simplet
   fixed_textR   R   t   appendt   output_encodingR   t   doctypet	   generatort   docutilst   __version__t   TestXmlt
   the_handlet	   xmlparsert   setContentHandler(   R   R   R,   (    (    s<   lib/python2.7/site-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 t j f ƒ r„ |  j d 7_ n  t
 | |  j ƒ r¨ |  j  d 7_  n  |  j  sÇ |  j j |  j ƒ n  d S(   s   Default node visit method.i   N(   R2   R   R4   R-   R1   t   starttagR
   t   saxt   saxutilst	   quoteattrt
   isinstanceR   t   FixedTextElementt   literalR3   t   simple_nodesR.   (   R   t   node(    (    s<   lib/python2.7/site-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 t j	 f ƒ rx |  j
 d 8_
 n  t | |  j ƒ rœ |  j d 8_ n  |  j s» |  j j |  j ƒ n  d S(   s   Default node depart method.i   N(   R1   R2   R   R4   R-   t   endtagRB   R   RC   RD   R3   RE   R.   (   R   RF   (    (    s<   lib/python2.7/site-packages/docutils/writers/docutils_xml.pyt   default_departure’   s    		c         C   s[   t  j j j | j ƒ  ƒ } |  j sG | j d d |  j |  j ƒ } n  |  j	 j
 | ƒ d  S(   Ns   
(   R
   R?   R@   t   escapet   astextR3   t   replaceR-   R1   R   R4   (   R   RF   t   text(    (    s<   lib/python2.7/site-packages/docutils/writers/docutils_xml.pyt
   visit_Text£   s    	#c         C   s   d  S(   N(    (   R   RF   (    (    s<   lib/python2.7/site-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   splitRG   RK   R   R4   RI   RB   t   unicodet   syst   version_infot   encodeR<   t   parseR   R
   R?   t   _exceptionst   SAXParseExceptionR;   t   locatort   getColumnNumbert   getLineNumberRS   t   parentR   t   TextElementR*   RR   t   SkipNode(   R   RF   t
   xml_stringR+   t   col_numt   line_numt   srclinet   msg(    (    s<   lib/python2.7/site-packages/docutils/writers/docutils_xml.pyt	   visit_raw­   s*    	((   R   R   R   R6   R7   R
   R?   t   make_parserR<   t
   setFeaturet   TrueR   R   Ra   t   imaget   colspect
   transitionRE   RG   RI   RN   RO   Rh   (    (    (    s<   lib/python2.7/site-packages/docutils/writers/docutils_xml.pyR   N   s   
	#				R:   c           B   s   e  Z d  „  Z RS(   c         C   s   | |  _  d  S(   N(   R]   (   R   R]   (    (    s<   lib/python2.7/site-packages/docutils/writers/docutils_xml.pyt   setDocumentLocatorË   s    (   R   R   Ro   (    (    (    s<   lib/python2.7/site-packages/docutils/writers/docutils_xml.pyR:   É   s   (   t   __doc__t   __docformat__RW   R
   t   __path__t   reverset   xml.sax.saxutilsR   R8   R   R   R   t   ApplicationErrorR   R	   t   GenericNodeVisitorR   R?   t   handlert   ContentHandlerR:   (    (    (    s<   lib/python2.7/site-packages/docutils/writers/docutils_xml.pyt   <module>	   s   
){