657 for key in unloadKeys: |
658 for key in unloadKeys: |
658 sys.modules.pop(key) |
659 sys.modules.pop(key) |
659 |
660 |
660 try: |
661 try: |
661 import docutils.core # __IGNORE_EXCEPTION__ |
662 import docutils.core # __IGNORE_EXCEPTION__ |
|
663 import docutils.utils # __IGNORE_EXCEPTION__ |
662 except ImportError: |
664 except ImportError: |
663 return self.tr( |
665 return self.tr( |
664 """<p>ReStructuredText preview requires the""" |
666 """<p>ReStructuredText preview requires the""" |
665 """ <b>python-docutils</b> package.<br/>Install it with""" |
667 """ <b>python-docutils</b> package.<br/>Install it with""" |
666 """ your package manager, 'pip install docutils' or see""" |
668 """ your package manager, 'pip install docutils' or see""" |
668 """this page.</a></p>""") |
670 """this page.</a></p>""") |
669 |
671 |
670 # redirect sys.stderr because we are not interested in it here |
672 # redirect sys.stderr because we are not interested in it here |
671 origStderr = sys.stderr |
673 origStderr = sys.stderr |
672 sys.stderr = io.StringIO() |
674 sys.stderr = io.StringIO() |
673 html = docutils.core.publish_string( |
675 try: |
674 text, writer_name=htmlFormat.lower()).decode("utf-8") |
676 html = docutils.core.publish_string( |
|
677 text, writer_name=htmlFormat.lower()).decode("utf-8") |
|
678 except docutils.utils.SystemMessage as err: |
|
679 errStr = str(err).split(":")[-1].replace("\n", "<br/>") |
|
680 return self.tr( |
|
681 """<p>Docutils returned an error:</p><p>{0}</p>""" |
|
682 ).format(errStr) |
|
683 |
675 sys.stderr = origStderr |
684 sys.stderr = origStderr |
676 return html |
685 return html |
677 |
686 |
678 def __convertMarkdown(self, text, convertNewLineToBreak, htmlFormat): |
687 def __convertMarkdown(self, text, convertNewLineToBreak, htmlFormat): |
679 """ |
688 """ |