Sha256: e04263a6a72a5a396c1f3f5172d09f2cbc682ca4d1eb5a406b1bb39bda3168d4

Contents?: true

Size: 1.98 KB

Versions: 8

Compression:

Stored size: 1.98 KB

Contents

# encoding: utf-8

module Nanoc::Filters

  # @since 3.2.0
  class Redcarpet < Nanoc::Filter

    requires 'redcarpet'

    # Runs the content through [Redcarpet](https://github.com/vmg/redcarpet).
    # This method optionally takes processing options to pass on to Redcarpet.
    #
    # @overload run(content, params={})
    #
    #   For Redcarpet 1.x
    #
    #   @param [String] content The content to filter
    #
    #   @option params [Array] :options ([]) A list of options to pass on to
    #     Redcarpet
    #
    #   @return [String] The filtered content
    #   
    # @overload run(content, params={})
    #
    #   For Redcarpet 2.x
    #
    #   @since 3.2.4
    #
    #   @param [String] content The content to filter
    #
    #   @option params [Hash] :options ({}) A list of options to pass on to
    #     Redcarpet itself (not the renderer)
    #
    #   @option params [::Redcarpet::Render::Base] :renderer
    #     (::Redcarpet::Render::HTML) The class of the renderer to use
    #
    #   @option params [Hash] :renderer_options ({}) A list of options to pass
    #     on to the Redcarpet renderer
    #
    #   @return [String] The filtered content
    def run(content, params={})
      if ::Redcarpet::VERSION > '2'
        options          = params[:options]          || {}
        renderer_class   = params[:renderer]         || ::Redcarpet::Render::HTML
        renderer_options = params[:renderer_options] || {}

        if options.is_a?(Array)
          warn 'WARNING: You are passing an array of options to the :redcarpet filter, but Redcarpet 2.x expects a hash instead. This will likely fail.'
        end

        if renderer_class == ::Redcarpet::Render::HTML_TOC
          renderer = renderer_class.new
        else
          renderer = renderer_class.new(renderer_options)
        end
        ::Redcarpet::Markdown.new(renderer, options).render(content)
      else
        options = params[:options] || []
        ::Redcarpet.new(content, *options).to_html
      end
    end

  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
nanoc-3.6.7 lib/nanoc/filters/redcarpet.rb
nanoc-3.6.6 lib/nanoc/filters/redcarpet.rb
nanoc-3.6.5 lib/nanoc/filters/redcarpet.rb
nanoc-3.6.4 lib/nanoc/filters/redcarpet.rb
nanoc-3.6.3 lib/nanoc/filters/redcarpet.rb
nanoc-3.6.2 lib/nanoc/filters/redcarpet.rb
nanoc-3.6.1 lib/nanoc/filters/redcarpet.rb
nanoc-3.6.0 lib/nanoc/filters/redcarpet.rb