Sha256: fc0d64dd946d4ce2eb86e121c0f71d1f2ae1b9af53fc0b3535eb18d72d26c618

Contents?: true

Size: 1007 Bytes

Versions: 3

Compression:

Stored size: 1007 Bytes

Contents

module Bunto
  module Converters
    class Markdown
      class RDiscountParser
        def initialize(config)
          Bunto::External.require_with_graceful_fail "rdiscount"
          @config = config
          @rdiscount_extensions = @config['rdiscount']['extensions'].map(&:to_sym)
        end

        def convert(content)
          rd = RDiscount.new(content, *@rdiscount_extensions)
          html = rd.to_html
          if @config['rdiscount']['toc_token']
            html = replace_generated_toc(rd, html, @config['rdiscount']['toc_token'])
          end
          html
        end

        private
        def replace_generated_toc(rd, html, toc_token)
          if rd.generate_toc && html.include?(toc_token)
            utf8_toc = rd.toc_content
            utf8_toc.force_encoding('utf-8') if utf8_toc.respond_to?(:force_encoding)
            html.gsub(toc_token, utf8_toc)
          else
            html
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bunto-3.0.0 lib/bunto/converters/markdown/rdiscount_parser.rb
bunto-2.0.0.pre lib/bunto/converters/markdown/rdiscount_parser.rb
bunto-1.0.0 lib/bunto/converters/markdown/rdiscount_parser.rb