Sha256: 0aa0cf6ebc360bd05dc63e38debc3aacbd177a2ca94980827152cd6777361fcd

Contents?: true

Size: 1.3 KB

Versions: 42

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module Nanoc::Filters
  # @api private
  class Redcarpet < Nanoc::Filter
    identifier :redcarpet

    requires 'redcarpet'

    def run(content, params = {})
      options          = params.fetch(:options,          {})
      renderer_class   = params.fetch(:renderer,         ::Redcarpet::Render::HTML)
      renderer_options = params.fetch(:renderer_options, {})
      with_toc         = params.fetch(:with_toc,         false)

      # Setup TOC
      if with_toc
        unless renderer_class <= ::Redcarpet::Render::HTML
          raise "Unexpected renderer: #{renderer_class}"
        end

        # `with_toc` implies `with_toc_data` for the HTML renderer
        renderer_options[:with_toc_data] = true
      end

      # Create renderer
      renderer =
        if renderer_class == ::Redcarpet::Render::HTML_TOC
          renderer_class.new
        else
          renderer_class.new(renderer_options)
        end

      # Render
      if with_toc
        renderer_toc = ::Redcarpet::Render::HTML_TOC.new
        toc = ::Redcarpet::Markdown.new(renderer_toc, options).render(content)
        body = ::Redcarpet::Markdown.new(renderer, options).render(content)
        toc + body
      else
        ::Redcarpet::Markdown.new(renderer, options).render(content)
      end
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
nanoc-4.13.3 lib/nanoc/filters/redcarpet.rb
nanoc-4.13.2 lib/nanoc/filters/redcarpet.rb
nanoc-4.13.1 lib/nanoc/filters/redcarpet.rb
nanoc-4.13.0 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.21 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.20 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.19 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.18 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.17 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.16 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.15 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.14 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.13 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.12 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.11 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.10 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.9 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.8 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.7 lib/nanoc/filters/redcarpet.rb
nanoc-4.12.6 lib/nanoc/filters/redcarpet.rb