diff options
author | Phil Hughes <me@iamphill.com> | 2017-11-22 11:00:12 +0000 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2017-11-22 11:00:12 +0000 |
commit | d7527d73b17e41f949c609380aeffc837b80652e (patch) | |
tree | 8f465bb688d59063c85e9689241e65137cf6cc96 /lib/banzai/filter/syntax_highlight_filter.rb | |
parent | 0efa7e24f22abd1dc04c165f31e7b77b0eb30ed4 (diff) | |
parent | 131e74d10dafbf2b781ab5d5517e42a18e20a587 (diff) | |
download | gitlab-ce-d7527d73b17e41f949c609380aeffc837b80652e.tar.gz |
Merge branch 'feature_add_mermaid' into 'master'
Add support of Mermaid
Closes #3711
See merge request gitlab-org/gitlab-ce!15107
Diffstat (limited to 'lib/banzai/filter/syntax_highlight_filter.rb')
-rw-r--r-- | lib/banzai/filter/syntax_highlight_filter.rb | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/lib/banzai/filter/syntax_highlight_filter.rb b/lib/banzai/filter/syntax_highlight_filter.rb index 7da565043d1..a79a0154846 100644 --- a/lib/banzai/filter/syntax_highlight_filter.rb +++ b/lib/banzai/filter/syntax_highlight_filter.rb @@ -14,23 +14,26 @@ module Banzai end def highlight_node(node) - language = node.attr('lang') code = node.text - css_classes = "code highlight" - lexer = lexer_for(language) - lang = lexer.tag - - begin - code = Rouge::Formatters::HTMLGitlab.format(lex(lexer, code), tag: lang) - - css_classes << " js-syntax-highlight #{lang}" - rescue - lang = nil - # Gracefully handle syntax highlighter bugs/errors to ensure - # users can still access an issue/comment/etc. + css_classes = 'code highlight js-syntax-highlight' + language = node.attr('lang') + + if use_rouge?(language) + lexer = lexer_for(language) + language = lexer.tag + + begin + code = Rouge::Formatters::HTMLGitlab.format(lex(lexer, code), tag: language) + css_classes << " #{language}" + rescue + # Gracefully handle syntax highlighter bugs/errors to ensure + # users can still access an issue/comment/etc. + + language = nil + end end - highlighted = %(<pre class="#{css_classes}" lang="#{lang}" v-pre="true"><code>#{code}</code></pre>) + highlighted = %(<pre class="#{css_classes}" lang="#{language}" v-pre="true"><code>#{code}</code></pre>) # Extracted to a method to measure it replace_parent_pre_element(node, highlighted) @@ -51,6 +54,10 @@ module Banzai # Replace the parent `pre` element with the entire highlighted block node.parent.replace(highlighted) end + + def use_rouge?(language) + %w(math mermaid plantuml).exclude?(language) + end end end end |