Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
d97c238a
Commit
d97c238a
authored
Oct 30, 2020
by
Guillaume Grossetie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Declare two constants to avoid recalculating
parent
1968e6d5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
8 deletions
+15
-8
lib/banzai/filter/kroki_filter.rb
lib/banzai/filter/kroki_filter.rb
+15
-8
No files found.
lib/banzai/filter/kroki_filter.rb
View file @
d97c238a
...
...
@@ -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
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment