
    ddk                        d Z dZddlmZ ddlZddlZddlmZmZm	Z	m
Z
  G d dej                        Z G d d	e	j                        Z G d
 dej                        Z G d dej                   j"                  j$                        Zy)zv
Simple document tree Writer, writes Docutils XML according to
https://docutils.sourceforge.io/docs/ref/docutils.dtd.
reStructuredText    )StringION)frontendnodeswritersutilsc                       e Zd Zy)RawXmlErrorN)__name__
__module____qualname__     ?/usr/lib/python3/dist-packages/docutils/writers/docutils_xml.pyr
   r
      s    r   r
   c                       e Zd ZdZ	 ddddgdej
                  dfdd	gdej
                  dfd
dgdddej
                  dfddgdddej
                  dfffZddiZdZdZ	dZ
	 d Zd Zy)Writer)xmlz"Docutils XML" Writer OptionsNz1Generate XML with newlines before and after tags.z
--newlines
store_true)action	validatorz'Generate XML with indents and newlines.z	--indentsz,Omit the XML declaration.  Use with caution.z--no-xml-declarationxml_declaration   store_false)destdefaultr   r   zOmit the DOCTYPE declaration.z--no-doctypedoctype_declarationoutput_encoding_error_handlerxmlcharrefreplacezdocutils_xml writer)r   c                 X    t         j                  j                  |        t        | _        y N)r   r   __init__XMLTranslatortranslator_class)selfs    r   r!   zWriter.__init__7   s    % -r   c                     | j                  | j                        x| _        }| j                  j                  |       dj	                  |j
                        | _        y )N )r#   documentvisitor	walkaboutjoinoutput)r$   r(   s     r   	translatezWriter.translate;   sC    !%!6!6t}}!EEw(gggnn-r   )r   r   r   	supportedr   validate_booleansettings_specsettings_defaultsconfig_sectionconfig_section_dependenciesr+   r!   r,   r   r   r   r   r      s    I' 	(
=.!0I0I
J
L 4-!0I0I
J
L 9!
"$m 113
4 *
(Q"1J1JL
M	OPM$ 9:MN*N".F...r   r   c                       e Zd ZdZdZej                  j                         Z	 ej                  dd       d Z
ej                  ej                  ej                  ej                  fZd Zd Zd Zd	 Zd
 Zy)r"   z<!DOCTYPE document PUBLIC "+//IDN docutils.sourceforge.net//DTD Docutils Generic//EN//XML" "http://docutils.sourceforge.net/docs/ref/docutils.dtd">
z"<!-- Generated by Docutils %s -->
z5http://xml.org/sax/features/external-general-entitiesTc                 j   t         j                  j                  | |       | j                  j                  j
                  | _        | j                  j                  j                  | _        |j                  x| _        }dx| _	        | _
        |j                  rd| _
        |j                  rd| _
        d| _	        d| _        d| _        d| _        g | _        |j"                  r8| j                   j%                  t'        j"                  |j(                               |j*                  r%| j                   j%                  | j,                         | j                   j%                  | j.                  t0        j2                  z         t5               | _        | j8                  j;                  | j6                         y )Nr&   
z    r   )r   NodeVisitorr!   r'   reporterwarningwarnerrorsettingsindentnewlinenewlinesindentslevel	in_simple
fixed_textr+   r   appendr   output_encodingr   doctype	generatordocutils__version__TestXml
the_handle	xmlparsersetContentHandler)r$   r'   r;   s      r   r!   zXMLTranslator.__init__P   s<   ""42 MM**22	]]++11
 $,#4#44%''dlDLDL DK
 ##KKu44X5M5MNO''KKt||,4>>H,@,@@A ")((9r   c                 z   | j                   s2| j                  j                  | j                  | j                  z         | j                  j                  |j                  t        j                  j                  j                               | xj                  dz  c_        t        |t        j                  t        j                  f      r| xj                  dz  c_        t        || j                        r| xj                   dz  c_         | j                   s&| j                  j                  | j                          yy)zDefault node visit method.r   N)rA   r+   rC   r<   r@   starttagr   saxsaxutils	quoteattr
isinstancer   FixedTextElementliteralrB   simple_nodesr=   r$   nodes     r   default_visitzXMLTranslator.default_visitu   s    ~~KKt{{4::564==)9)9)C)CDE

a
dU33U]]CDOOq OdD--.NNaN~~KKt||, r   c                 4   | xj                   dz  c_         | j                  s2| j                  j                  | j                  | j                   z         | j                  j                  |j                                t        |t        j                  t        j                  f      r| xj                  dz  c_
        t        || j                        r| xj                  dz  c_        | j                  s&| j                  j                  | j                         yy)zDefault node depart method.r   N)r@   rA   r+   rC   r<   endtagrR   r   rS   rT   rB   rU   r=   rV   s     r   default_departurezXMLTranslator.default_departure   s    

a
~~KKt{{4::564;;=)dU33U]]CDOOq OdD--.NNaN~~KKt||, r   c                    t         j                  j                  j                  |j	                               }| j
                  s,|j                  dd| j                  | j                  z  z         }| j                  j                  |       y )Nr5   )r   rO   rP   escapeastextrB   replacer<   r@   r+   rC   )r$   rW   texts      r   
visit_TextzXMLTranslator.visit_Text   s]    ww&&t{{}5<<d4;;tzz+A&ABD4 r   c                      y r    r   rV   s     r   depart_TextzXMLTranslator.depart_Text   s    r   c                 T   d|j                  dd      j                         vr| j                  |       y | j                  |       |j                         }| j                  j                  |       | j                  |       	 | j                  j                  t        |             t*        j2                  # t        j                  j                  j                  $ r | j                  j                  j!                         }| j                  j                  j#                         }|j$                  }t'        |j(                  t*        j,                        s|dz  }d|||j                         fz  }| j/                  ||j0                  ||z   dz
         Y t*        j2                  w xY w)Nr   formatr&      z0Invalid raw XML in column %d, line offset %d:
%sr   )sourceline)getsplitrX   r^   r+   rC   r[   rK   parser   r   rO   _exceptionsSAXParseExceptionrJ   locatorgetColumnNumbergetLineNumberrh   rR   parentr   TextElementr9   rg   SkipNode)r$   rW   
xml_stringcol_numline_numsrclinemsgs          r   	visit_rawzXMLTranslator.visit_raw   sS   2.4466 t$4 [[]
:&t$
	HNN  *!56 nn ww""44 	Hoo--==?G..<<>HiiGdkk5+<+<=1EHdkkmI5 5CIIc$++GH4DQ4FIGnn	Hs   $B7 7CF'&F'N)r   r   r   rE   rF   r   rO   make_parserrK   
setFeaturer!   r   rr   imagecolspec
transitionrU   rX   r[   ra   rc   ry   r   r   r   r"   r"   A   s    
	F  6I##%I7?G:D %%KK0@0@BL-- !r   r"   c                       e Zd Zd Zy)rI   c                     || _         y r    )rn   )r$   rn   s     r   setDocumentLocatorzTestXml.setDocumentLocator   s	    r   N)r   r   r   r   r   r   r   rI   rI      s    r   rI   )__doc____docformat__ior   xml.sax.saxutilsr   rG   r   r   r   r   ApplicationErrorr
   r   GenericNodeVisitorr"   rO   handlerContentHandlerrI   r   r   r   <module>r      sr   
 #    4 4	(++ 	&.W^^ &.RsE,, slcggoo,, r   