diff options
-rw-r--r-- | Rules | 2 | ||||
-rw-r--r-- | lib/filters/convert_mermaid_html.rb | 21 |
2 files changed, 23 insertions, 0 deletions
@@ -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('&', '&') + .gsub('<', '<') + .gsub('>', '>') + .gsub('"', '"') + + %(<div class="mermaid">#{fixed_content}</div>) + end +end |