Просмотр исходного кода

ignore missing lexers in code blocks

Sam Heybey 7 лет назад
Родитель
Сommit
2929148257
1 измененных файлов с 9 добавлено и 2 удалено
  1. 9 2
      flaskbb/utils/markup.py

+ 9 - 2
flaskbb/utils/markup.py

@@ -17,6 +17,7 @@ import mistune
 from pygments import highlight
 from pygments.lexers import get_lexer_by_name
 from pygments.formatters import HtmlFormatter
+from pygments.util import ClassNotFound
 
 
 _re_emoji = re.compile(r':([a-z0-9\+\-_]+):', re.I)
@@ -88,10 +89,16 @@ class FlaskBBRenderer(mistune.Renderer):
         return '<p>%s</p>\n' % text.strip(' ')
 
     def block_code(self, code, lang):
-        if not lang:
+        if lang:
+            try:
+                lexer = get_lexer_by_name(lang, stripall=True)
+            except ClassNotFound:
+                lexer = None
+        else:
+            lexer = None
+        if not lexer:
             return '\n<pre><code>%s</code></pre>\n' % \
                 mistune.escape(code)
-        lexer = get_lexer_by_name(lang, stripall=True)
         formatter = HtmlFormatter()
         return highlight(code, lexer, formatter)