UI/Previewers/PreviewerHTML.py

branch
maintenance
changeset 6826
c6dda2cbe081
parent 6646
51eefa621de4
parent 6794
10c368c9c02b
diff -r d14ddbfbbd36 -r c6dda2cbe081 UI/Previewers/PreviewerHTML.py
--- a/UI/Previewers/PreviewerHTML.py	Sat Feb 16 10:27:50 2019 +0100
+++ b/UI/Previewers/PreviewerHTML.py	Sat Mar 02 11:15:24 2019 +0100
@@ -11,6 +11,7 @@
 
 try:  # Only for Py2
     import StringIO as io   # __IGNORE_EXCEPTION__
+    str = unicode
 except (ImportError, NameError):
     import io       # __IGNORE_WARNING__
 
@@ -659,6 +660,7 @@
         
         try:
             import docutils.core    # __IGNORE_EXCEPTION__
+            import docutils.utils   # __IGNORE_EXCEPTION__
         except ImportError:
             return self.tr(
                 """<p>ReStructuredText preview requires the"""
@@ -670,8 +672,15 @@
         # redirect sys.stderr because we are not interested in it here
         origStderr = sys.stderr
         sys.stderr = io.StringIO()
-        html = docutils.core.publish_string(
-            text, writer_name=htmlFormat.lower()).decode("utf-8")
+        try:
+            html = docutils.core.publish_string(
+                text, writer_name=htmlFormat.lower()).decode("utf-8")
+        except docutils.utils.SystemMessage as err:
+            errStr = str(err).split(":")[-1].replace("\n", "<br/>")
+            return self.tr(
+                """<p>Docutils returned an error:</p><p>{0}</p>"""
+            ).format(errStr)
+        
         sys.stderr = origStderr
         return html
     

eric ide

mercurial