Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-docs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Rules2
-rw-r--r--lib/filters/convert_mermaid_html.rb21
2 files changed, 23 insertions, 0 deletions
diff --git a/Rules b/Rules
index 867a7cca..77998113 100644
--- a/Rules
+++ b/Rules
@@ -82,6 +82,8 @@ compile '/**/*.md' do
toc_levels: 2..5,
with_toc: include_toc
+ filter :convert_mermaid_html
+
filter :colorize_syntax,
default_colorizer: :rouge
diff --git a/lib/filters/convert_mermaid_html.rb b/lib/filters/convert_mermaid_html.rb
new file mode 100644
index 00000000..770502b1
--- /dev/null
+++ b/lib/filters/convert_mermaid_html.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class ConvertMermaidHtml < Nanoc::Filter
+ identifier :convert_mermaid_html
+
+ MERMAID_HTML_PATTERN = %r{<div\ class="mermaid">(?<mermaid_content>.*?)</div>}mx
+
+ def run(content, params = {})
+ content.gsub(MERMAID_HTML_PATTERN) { generate(Regexp.last_match[:mermaid_content]) }
+ end
+
+ def generate(content)
+ fixed_content = content
+ .gsub('&', '&amp;')
+ .gsub('<', '&lt;')
+ .gsub('>', '&gt;')
+ .gsub('"', '&quot;')
+
+ %(<div class="mermaid">#{fixed_content}</div>)
+ end
+end