UI/Previewers/PreviewerHTML.py

changeset 6794
10c368c9c02b
parent 6645
ad476851d7e0
child 6826
c6dda2cbe081
diff -r 1ed35ada4c59 -r 10c368c9c02b UI/Previewers/PreviewerHTML.py
--- a/UI/Previewers/PreviewerHTML.py	Tue Feb 19 19:08:03 2019 +0100
+++ b/UI/Previewers/PreviewerHTML.py	Thu Feb 21 19:22:11 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