Class: JekyllMermaidPrebuild::Generator
- Inherits:
-
Object
- Object
- JekyllMermaidPrebuild::Generator
- Defined in:
- lib/jekyll-mermaid-prebuild/generator.rb
Overview
SVG generation and caching
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
-
#build_figure_html(svg_url, dark_url: nil) ⇒ String
Build figure HTML for a diagram.
-
#build_svg_url(cache_key) ⇒ String
Build SVG URL from cache key (stem, e.g. digest or digest-dark).
-
#generate(mermaid_source, cache_key) ⇒ Hash{String => String}?
Generate SVG from mermaid source (with caching).
-
#initialize(config) ⇒ Generator
constructor
Initialize generator with configuration.
Constructor Details
#initialize(config) ⇒ Generator
Initialize generator with configuration
13 14 15 |
# File 'lib/jekyll-mermaid-prebuild/generator.rb', line 13 def initialize(config) @config = config end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
8 9 10 |
# File 'lib/jekyll-mermaid-prebuild/generator.rb', line 8 def config @config end |
Instance Method Details
#build_figure_html(svg_url, dark_url: nil) ⇒ String
Build figure HTML for a diagram
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/jekyll-mermaid-prebuild/generator.rb', line 46 def build_figure_html(svg_url, dark_url: nil) if dark_url return <<~HTML <figure class="mermaid-diagram"> <style> .mermaid-diagram__light { display: inline; } .mermaid-diagram__dark { display: none; } @media (prefers-color-scheme: dark) { .mermaid-diagram__light { display: none; } .mermaid-diagram__dark { display: inline; } } </style> <a class="mermaid-diagram__light" href="#{svg_url}"><img src="#{svg_url}" alt="Mermaid Diagram"></a> <a class="mermaid-diagram__dark" href="#{dark_url}"><img src="#{dark_url}" alt="Mermaid Diagram"></a> </figure> HTML end <<~HTML <figure class="mermaid-diagram"> <a href="#{svg_url}"><img src="#{svg_url}" alt="Mermaid Diagram"></a> </figure> HTML end |
#build_svg_url(cache_key) ⇒ String
Build SVG URL from cache key (stem, e.g. digest or digest-dark)
37 38 39 |
# File 'lib/jekyll-mermaid-prebuild/generator.rb', line 37 def build_svg_url(cache_key) "/#{@config.output_dir}/#{cache_key}.svg" end |
#generate(mermaid_source, cache_key) ⇒ Hash{String => String}?
Generate SVG from mermaid source (with caching)
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/jekyll-mermaid-prebuild/generator.rb', line 22 def generate(mermaid_source, cache_key) case @config.prefers_color_scheme when :light generate_one(mermaid_source, cache_key, theme: :default) when :dark generate_one(mermaid_source, cache_key, theme: :dark) when :auto generate_auto(mermaid_source, cache_key) end end |