Commit d97c238a authored by Guillaume Grossetie's avatar Guillaume Grossetie

Declare two constants to avoid recalculating

parent 1968e6d5
...@@ -9,20 +9,23 @@ module Banzai ...@@ -9,20 +9,23 @@ module Banzai
# HTML that replaces all diagrams supported by Kroki with the corresponding img tags. # HTML that replaces all diagrams supported by Kroki with the corresponding img tags.
# #
class KrokiFilter < HTML::Pipeline::Filter class KrokiFilter < HTML::Pipeline::Filter
DIAGRAM_SELECTORS = ::Gitlab::Kroki::DIAGRAM_TYPES.map do |diagram_type| DIAGRAM_SELECTORS = ::Gitlab::Kroki::DIAGRAM_TYPES.map(&:to_selector).join(', ')
%(pre[lang="#{diagram_type}"] > code) DIAGRAM_SELECTORS_WO_PLANTUML = ::Gitlab::Kroki::DIAGRAM_TYPES.select do |diagram_type|
end.join(', ') diagram_type != 'plantuml'
end.map(&:to_selector).join(', ')
def call def call
plantuml_enabled = settings.plantuml_enabled plantuml_enabled = settings.plantuml_enabled
diagram_selectors = ::Gitlab::Kroki::DIAGRAM_TYPES.map do |diagram_type| # if PlantUML is enabled, PlantUML diagrams will be processed by the PlantUML filter.
# if PlantUML is enabled, PlantUML diagrams will be processed by the PlantUML filter. diagram_selectors = if settings.plantuml_enabled
%(pre[lang="#{diagram_type}"] > code) if (plantuml_enabled && diagram_type != 'plantuml') || !plantuml_enabled DIAGRAM_SELECTORS_WO_PLANTUML
end.compact.join(', ') else
DIAGRAM_SELECTORS
end
return doc unless settings.kroki_enabled && doc.at(diagram_selectors) return doc unless settings.kroki_enabled && doc.at(diagram_selectors)
diagram_format = "svg" diagram_format = "svg"
doc.css(DIAGRAM_SELECTORS).each do |node| doc.css(diagram_selectors).each do |node|
diagram_type = node.parent['lang'] diagram_type = node.parent['lang']
img_tag = Nokogiri::HTML::DocumentFragment.parse(%(<img src="#{create_image_src(diagram_type, diagram_format, node.content)}"/>)) img_tag = Nokogiri::HTML::DocumentFragment.parse(%(<img src="#{create_image_src(diagram_type, diagram_format, node.content)}"/>))
node.parent.replace(img_tag) node.parent.replace(img_tag)
...@@ -33,6 +36,10 @@ module Banzai ...@@ -33,6 +36,10 @@ module Banzai
private private
def self.to_selector (diagram_type)
%(pre[lang="#{diagram_type}"] > code)
end
# QUESTION: should should we use the asciidoctor-kroki gem to delegate this logic? # QUESTION: should should we use the asciidoctor-kroki gem to delegate this logic?
def create_image_src(type, format, text) def create_image_src(type, format, text)
data = Base64.urlsafe_encode64(Zlib::Deflate.deflate(text, 9)) data = Base64.urlsafe_encode64(Zlib::Deflate.deflate(text, 9))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment