class Moft::Converters::Markdown::RedcarpetParser
Public Class Methods
new(config)
click to toggle source
# File lib/moft/converters/markdown/redcarpet_parser.rb, line 5 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
Public Instance Methods
block_code(code, lang)
click to toggle source
# File lib/moft/converters/markdown/redcarpet_parser.rb, line 12 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
convert(content)
click to toggle source
# File lib/moft/converters/markdown/redcarpet_parser.rb, line 31 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