U C^@sdZdZddlZddlZdejdkr0ejddlZddlmZddl Z ddl m Z m Z m Z Gddde j ZGd d d e jZGd d d e jZGd ddejjjZdS)zv Simple document tree Writer, writes Docutils XML according to http://docutils.sourceforge.net/docs/ref/docutils.dtd. ZreStructuredTextNZ_xmlplus)StringIO)frontendwritersnodesc@s eZdZdS) RawXmlErrorN)__name__ __module__ __qualname__r r C/tmp/pip-install-6_kvzl1k/docutils/docutils/writers/docutils_xml.pyr"src @seZdZdZddddgdejdfdd gdejdfd d gd d dejdfddgdd dejdfffZddiZdZdZ dZ ddZ ddZ dS)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-declarationxml_declaration store_false)destdefaultrrzOmit the DOCTYPE declaration.z --no-doctypedoctype_declarationZoutput_encoding_error_handlerxmlcharrefreplacezdocutils_xml writer)rcCstj|t|_dSN)rr __init__ XMLTranslatortranslator_class)selfr r r rDs zWriter.__init__cCs0||j|_}|j|d|j|_dS)N)rdocumentvisitorZ walkaboutjoinoutput)rrr r r translateHs zWriter.translate) rrr supportedrZvalidate_booleanZ settings_specZsettings_defaultsZconfig_sectionZconfig_section_dependenciesr!rr"r r r r r %s@  r c@sreZdZdZdZdZejZ e ddddZ e j e je je jfZdd Zd d Zd d ZddZddZdS)rz$ z z" z5http://xml.org/sax/features/external-general-entitiesTcCstj|||jjj|_|jjj|_|j|_}d|_ |_ |j rJd|_ |j r\d|_ d|_ d|_ d|_d|_g|_|jr|j|j|j|jr|j|j|j|jtjt|_|j|jdS)Nr z r)rZ NodeVisitorrrZreporterwarningwarnerrorsettingsindentnewlinenewlinesindentslevel in_simple fixed_textr!rappendoutput_encodingrdoctype generatordocutils __version__TestXml the_handle xmlparsersetContentHandler)rrr(r r r r^s.     zXMLTranslator.__init__cCs|js|j|j|j|j|tjjj |jd7_t |t j t j fr`|jd7_t ||jrz|jd7_|js|j|jdS)zDefault node visit method.rN)r.r!r0r)r-Zstarttagr saxsaxutils quoteattr isinstancerFixedTextElementliteralr/ simple_nodesr*rnoder r r default_visits zXMLTranslator.default_visitcCs|jd8_|js(|j|j|j|j|t|tjtj frX|j d8_ t||j rr|jd8_|js|j|j dS)zDefault node depart method.rN) r-r.r!r0r)Zendtagr=rr>r?r/r@r*rAr r r default_departures zXMLTranslator.default_departurecCs@tjj|}|js0|dd|j|j}|j |dS)Nr$) r r:r;escapeastextr/replacer)r-r!r0)rrBtextr r r visit_TextszXMLTranslator.visit_TextcCsdSrr rAr r r depart_TextszXMLTranslator.depart_Textc Csd|ddkr"||dS|||}|j|||t|trht j dkrh| d}z|j t|Wntjjjk r}zd|jj}|jj}|j}t|jtjs|d7}d|||f}|j||j||dd W5d}~XYnXtjdS) Nr formatr)utf8z0Invalid raw XML in column %d, line offset %d: %sr)sourceline)getsplitrCrFr!r0rDr=strsys version_infoencoder8parserr r: _exceptionsSAXParseExceptionr7locatorgetColumnNumber getLineNumberrPparentr TextElementr&rOZSkipNode)rrBZ xml_stringr'Zcol_numline_numZsrclinemsgr r r visit_raws0       ,zXMLTranslator.visit_rawN)rrr rr2r3r r: make_parserr8 setFeaturerrr^imageZcolspecZ transitionr@rCrDrIrJrar r r r rNs( #rc@seZdZddZdS)r6cCs ||_dSr)rZ)rrZr r r setDocumentLocatorszTestXml.setDocumentLocatorN)rrr rer r r r r6sr6)__doc__Z __docformat__rTr __path__reversexml.sax.saxutilsiorr4rrrZApplicationErrorrr ZGenericNodeVisitorrr:handlerContentHandlerr6r r r r s   ){