Class: Markdowndocs::MarkdownRenderer

Inherits:
Object
  • Object
show all
Defined in:
app/services/markdowndocs/markdown_renderer.rb

Overview

Service for rendering Markdown content to HTML with syntax highlighting and security measures. Uses commonmarker for GFM (GitHub Flavored Markdown) and Rouge for syntax highlighting.

Class Method Summary collapse

Class Method Details

.render(markdown, cache_key: nil, mode: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/services/markdowndocs/markdown_renderer.rb', line 12

def render(markdown, cache_key: nil, mode: nil)
  return "" if markdown.blank?

  filtered_markdown = filter_by_mode(markdown, mode)

  if cache_key.present?
    mode_key = mode.present? ? "#{cache_key}:#{mode}" : cache_key
    Rails.cache.fetch("markdowndocs:#{mode_key}", expires_in: Markdowndocs.config.cache_expiry) do
      render_markdown(filtered_markdown)
    end
  else
    render_markdown(filtered_markdown)
  end
end