eric6/UI/Previewers/PreviewerHTML.py

changeset 7314
c32c24345ca7
parent 7309
5a434813eef3
child 7322
cd8ee889589f
child 7360
9190402e4505
--- a/eric6/UI/Previewers/PreviewerHTML.py	Thu Oct 24 19:34:53 2019 +0200
+++ b/eric6/UI/Previewers/PreviewerHTML.py	Fri Oct 25 20:15:51 2019 +0200
@@ -678,14 +678,16 @@
                 """<a href="http://pythonhosted.org/Markdown/install.html">"""
                 """installation instructions.</a></p>""")
         
+        from . import PreviewerHTMLStyles
+        from . import MarkdownExtensions
+        
         extensions = []
         
+        mermaidNeeded = False
         if Preferences.getEditor("PreviewMarkdownMermaid"):
-            try:
-                import md_mermaid   # __IGNORE_EXCEPTION__ __IGNORE_WARNING__
-                extensions.append("md_mermaid")
-            except ImportError:
-                pass
+            if MarkdownExtensions.MermaidRegexFullText.search(text):
+                extensions.append(MarkdownExtensions.MermaidExtension())
+                mermaidNeeded = True
         
         if convertNewLineToBreak:
             extensions.append('nl2br')
@@ -697,6 +699,7 @@
                 # PyPI package is 'pymdown-extensions'
                 
                 extensions.extend([
+                    'toc',
                     'pymdownx.extra', 'pymdownx.caret', 'pymdownx.emoji',
                     'pymdownx.mark', 'pymdownx.tilde', 'pymdownx.keys',
                     'pymdownx.tasklist', 'pymdownx.smartsymbols',
@@ -714,74 +717,7 @@
                 (markdown.version_info[0] == 2 and
                  markdown.version_info[1] > 0)
             ):
-                class _TildeExtension(markdown.Extension):
-                    """
-                    Class is placed here, because it depends on imported
-                    markdown, and markdown import is lazy.
-                    
-                    (see https://pythonhosted.org/Markdown/extensions/api.html
-                    this page for details)
-                    """
-                    DEL_RE = r'(~~)(.+?)~~'
-                    SUB_RE = r'(~)(.+?)~'
-
-                    def extendMarkdown(self, md, md_globals):
-                        # Create the sub pattern and insert it into markdown
-                        # parser
-                        sub_tag = markdown.inlinepatterns.SimpleTagPattern(
-                            self.SUB_RE, 'sub')
-                        md.inlinePatterns.add('sub', sub_tag, '>not_strong')
-                        
-                        # Create the del pattern and insert it into markdown
-                        # parser
-                        del_tag = markdown.inlinepatterns.SimpleTagPattern(
-                            self.DEL_RE, 'del')
-                        md.inlinePatterns.add('del', del_tag, '>not_strong')
-                
-                class _CaretExtension(markdown.Extension):
-                    """
-                    Class is placed here, because it depends on imported
-                    markdown, and markdown import is lazy.
-                    
-                    (see https://pythonhosted.org/Markdown/extensions/api.html
-                    this page for details)
-                    """
-                    INS_RE = r'(\^\^)(.*?)\^\^'
-                    SUP_RE = r'(\^)(.*?)\^'
-                    
-                    def extendMarkdown(self, md, md_globals):
-                        # Create the sup pattern and insert it into markdown
-                        # parser
-                        sup_tag = markdown.inlinepatterns.SimpleTagPattern(
-                            self.SUP_RE, 'sup')
-                        md.inlinePatterns.add('sup', sup_tag, '>not_strong')
-                        
-                        # Create the ins pattern and insert it into markdown
-                        # parser
-                        ins_tag = markdown.inlinepatterns.SimpleTagPattern(
-                            self.INS_RE, 'ins')
-                        md.inlinePatterns.add('ins', ins_tag, '>not_strong')
-                
-                class _MarkExtension(markdown.Extension):
-                    """
-                    Class is placed here, because it depends on imported
-                    markdown, and markdown import is lazy.
-                    
-                    (see https://pythonhosted.org/Markdown/extensions/api.html
-                    this page for details)
-                    """
-                    MARK_RE = r'(==)(.*?)=='
-                    
-                    def extendMarkdown(self, md, md_globals):
-                        # Create the mark pattern and insert it into markdown
-                        # parser
-                        mark_tag = markdown.inlinepatterns.SimpleTagPattern(
-                            self.MARK_RE, 'mark')
-                        md.inlinePatterns.add('mark', mark_tag, '>not_strong')
-                
-                extensions.extend([
-                    _TildeExtension(), _CaretExtension(), _MarkExtension()
-                ])
+                extensions.append(MarkdownExtensions.SimplePatternExtension())
 
         if Preferences.getEditor("PreviewMarkdownMathJax"):
             mathjax = (
@@ -801,7 +737,7 @@
         else:
             mathjax = ""
         
-        if Preferences.getEditor("PreviewMarkdownMermaid"):
+        if mermaidNeeded:
             mermaid = (
                 "<script type='text/javascript' id='Mermaid-script'"
                 " src='https://unpkg.com/mermaid@8/dist/mermaid.min.js'>\n"
@@ -836,9 +772,16 @@
             '''content="text/html; charset=utf-8" />\n'''
             '''{0}'''
             '''{1}'''
+            '''<style type="text/css">'''
+            '''{2}'''
+            '''</style>\n'''
             '''</head>\n'''
             '''<body>\n'''
-        ).format(mathjax, mermaid)
+        ).format(
+            mathjax, mermaid,
+            PreviewerHTMLStyles.css_markdown +
+            PreviewerHTMLStyles.css_pygments
+        )
         
         foot = '''\n</body>\n</html>\n'''
         

eric ide

mercurial