require "rouge/plugins/redcarpet" class MarkdownRenderer < Redcarpet::Render::HTML include Rouge::Plugins::Redcarpet def self.build renderer = MarkdownRenderer.new(ActionText::Markdown::DEFAULT_RENDERER_OPTIONS) Redcarpet::Markdown.new(renderer, ActionText::Markdown::DEFAULT_MARKDOWN_EXTENSIONS) end def initialize(*args) super @id_counts = Hash.new(0) end def header(text, header_level) unique_id(text).then do |id| "#{text} " end end def image(url, title, alt_text) %(#{alt_text}) end private def unique_id(text) text.parameterize.then do |base_id| @id_counts[base_id] += 1 @id_counts[base_id] > 1 ? "#{base_id}-#{@id_counts[base_id]}" : base_id end end end