[Zope-Checkins] SVN: Zope/trunk/lib/python/Products/ZReST/ZReST.py replace docutils code with some similiar code taken

Andreas Jung andreas at andreas-jung.com
Mon Mar 13 08:26:00 EST 2006


Log message for revision 65940:
  replace docutils code with some similiar code taken
  from zope.app.renderer.rest
  

Changed:
  U   Zope/trunk/lib/python/Products/ZReST/ZReST.py

-=-
Modified: Zope/trunk/lib/python/Products/ZReST/ZReST.py
===================================================================
--- Zope/trunk/lib/python/Products/ZReST/ZReST.py	2006-03-13 13:03:15 UTC (rev 65939)
+++ Zope/trunk/lib/python/Products/ZReST/ZReST.py	2006-03-13 13:26:00 UTC (rev 65940)
@@ -7,19 +7,22 @@
 and a HTML "formatted" version of that text.
 
 '''
+
+import sys
 import docutils.core, docutils.io
+from docutils.writers.html4css1 import HTMLTranslator, Writer
 
-from Globals import InitializeClass, DTMLFile
+from Acquisition import Implicit
+from Persistence import Persistent
 from OFS.SimpleItem import Item
 from OFS.PropertyManager import PropertyManager
 from OFS.History import Historical, html_diff
-from Acquisition import Implicit
-from Persistence import Persistent
+from Globals import InitializeClass, DTMLFile
 from AccessControl import ClassSecurityInfo
 from AccessControl import ModuleSecurityInfo
 from DateTime.DateTime import DateTime
 from App.config import getConfiguration 
-import sys
+
 modulesecurity = ModuleSecurityInfo()
 
 modulesecurity.declareProtected('View management screens',
@@ -190,56 +193,24 @@
         ''' Render the source to HTML
         '''
         if self._v_formatted is None:
-            # format with strings
-            pub = docutils.core.Publisher()
-            pub.set_reader('standalone', None, 'restructuredtext')
-            pub.set_writer('html')
 
-            # go with the defaults
-            pub.get_settings()
+            settings = {
+                'halt_level': 6,
+                'report_level' : self.report_level,
+                'input_encoding': self.input_encoding,
+                'output_encoding': self.output_encoding,
+                'initial_header_level' : 1,
+                'stylesheet' : self.stylesheet,
+                'pub.settings.warning_stream' :  Warnings(),
+                'file_insertion_enabled' : 0,
+                }
 
-            # this is needed, but doesn't seem to do anything
-            pub.settings._destination = ''
+            self._v_formatted = docutils.core.publish_string(
+                                        self.source,
+                                        writer=Writer(),
+                                        settings_overrides=settings,
+                                )
 
-            # use the stylesheet chosen by the user
-            pub.settings.stylesheet = self.stylesheet
-
-            # set the reporting level to something sane
-            pub.settings.report_level = int(self.report_level)
-
-            # disallow use of the .. include directive for security reasons
-            pub.settings.file_insertion_enabled = 0
-
-            # don't break if we get errors
-            pub.settings.halt_level = 6
-
-            # remember warnings
-            pub.settings.warning_stream = Warnings()
-
-            pub.source = docutils.io.StringInput(
-                source=self.source, encoding=self.input_encoding)
-
-            # output - not that it's needed
-            pub.settings.output_encoding = self.output_encoding
-            pub.destination = docutils.io.StringOutput(
-                encoding=self.output_encoding)
-
-            # parse!
-            document = pub.reader.read(pub.source, pub.parser, pub.settings)
-
-            # transform
-            pub.apply_transforms(document)
-
-            self._v_warnings = ''.join(pub.settings.warning_stream.messages)
-
-            if document.children:
-                item = document.children[0]
-                if item.tagname == 'title':
-                    self.title = item.children[0].astext()
-
-            # do the format
-            self._v_formatted = pub.writer.write(document, pub.destination)
-
         return self._v_formatted
 
 



More information about the Zope-Checkins mailing list