Sha256: b7f4326241a0d7ef8ed43ebe91fea7f1386e2129000e20f4d45cb647ce190966

Contents?: true

Size: 1.47 KB

Versions: 7

Compression:

Stored size: 1.47 KB

Contents

module Moft
  module Converters
    class Markdown
      class RedcarpetParser
        def initialize(config)
          require 'redcarpet'
          @config = config
          @redcarpet_extensions = {}
          @config['redcarpet']['extensions'].each { |e| @redcarpet_extensions[e.to_sym] = true }

          @renderer ||= Class.new(Redcarpet::Render::HTML) do
            def block_code(code, lang)
              lang = lang && lang.split.first || "text"
              output = add_code_tags(
                Pygments.highlight(code, :lexer => lang, :options => { :encoding => 'utf-8' }),
                lang
              )
            end

            def add_code_tags(code, lang)
              code = code.sub(/<pre>/,'<pre><code class="' + lang + '">')
              code = code.sub(/<\/pre>/,"</code></pre>")
            end
          end
        rescue LoadError
          STDERR.puts 'You are missing a library required for Markdown. Please run:'
          STDERR.puts '  $ [sudo] gem install redcarpet'
          raise FatalException.new("Missing dependency: redcarpet")
        end

        def convert(content)
          @redcarpet_extensions[:fenced_code_blocks] = !@redcarpet_extensions[:no_fenced_code_blocks]
          @renderer.send :include, Redcarpet::Render::SmartyPants if @redcarpet_extensions[:smart]
          markdown = Redcarpet::Markdown.new(@renderer.new(@redcarpet_extensions), @redcarpet_extensions)
          markdown.render(content)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
moft-1.0.5 lib/moft/converters/markdown/redcarpet_parser.rb
moft-1.0.4 lib/moft/converters/markdown/redcarpet_parser.rb
moft-1.0.3 lib/moft/converters/markdown/redcarpet_parser.rb
moft-1.0.2.1 lib/moft/converters/markdown/redcarpet_parser.rb
moft-1.0.2 lib/moft/converters/markdown/redcarpet_parser.rb
moft-1.0.1 lib/moft/converters/markdown/redcarpet_parser.rb
moft-1.0.0 lib/moft/converters/markdown/redcarpet_parser.rb