Commit d97c238a authored by Guillaume Grossetie's avatar Guillaume Grossetie

Declare two constants to avoid recalculating

parent 1968e6d5
......@@ -9,20 +9,23 @@ module Banzai
# HTML that replaces all diagrams supported by Kroki with the corresponding img tags.
#
class KrokiFilter < HTML::Pipeline::Filter
DIAGRAM_SELECTORS = ::Gitlab::Kroki::DIAGRAM_TYPES.map do |diagram_type|
%(pre[lang="#{diagram_type}"] > code)
end.join(', ')
DIAGRAM_SELECTORS = ::Gitlab::Kroki::DIAGRAM_TYPES.map(&:to_selector).join(', ')
DIAGRAM_SELECTORS_WO_PLANTUML = ::Gitlab::Kroki::DIAGRAM_TYPES.select do |diagram_type|
diagram_type != 'plantuml'
end.map(&:to_selector).join(', ')
def call
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.
%(pre[lang="#{diagram_type}"] > code) if (plantuml_enabled && diagram_type != 'plantuml') || !plantuml_enabled
end.compact.join(', ')
# if PlantUML is enabled, PlantUML diagrams will be processed by the PlantUML filter.
diagram_selectors = if settings.plantuml_enabled
DIAGRAM_SELECTORS_WO_PLANTUML
else
DIAGRAM_SELECTORS
end
return doc unless settings.kroki_enabled && doc.at(diagram_selectors)
diagram_format = "svg"
doc.css(DIAGRAM_SELECTORS).each do |node|
doc.css(diagram_selectors).each do |node|
diagram_type = node.parent['lang']
img_tag = Nokogiri::HTML::DocumentFragment.parse(%(<img src="#{create_image_src(diagram_type, diagram_format, node.content)}"/>))
node.parent.replace(img_tag)
......@@ -33,6 +36,10 @@ module Banzai
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?
def create_image_src(type, format, text)
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