middleman/middleman-core/lib/middleman-core/renderers/markdown.rb

57 lines
1.8 KiB
Ruby

module Middleman
module Renderers
# Markdown renderer
module Markdown
# Setup extension
class << self
# Once registered
def registered(app)
# Set our preference for a markdown engine
app.set :markdown_engine, :maruku
app.set :markdown_engine_prefix, ::Tilt
app.before_configuration do
template_extensions :markdown => :html,
:mdown => :html,
:md => :html,
:mkd => :html,
:mkdn => :html
end
# Once configuration is parsed
app.after_configuration do
begin
# Look for the user's preferred engine
if markdown_engine == :redcarpet
require "middleman-core/renderers/redcarpet"
::Tilt.prefer(::Middleman::Renderers::RedcarpetTemplate)
elsif !markdown_engine.nil?
# Map symbols to classes
markdown_engine_klass = if markdown_engine.is_a? Symbol
engine = markdown_engine.to_s
engine = engine == "rdiscount" ? "RDiscount" : engine.camelize
markdown_engine_prefix.const_get("#{engine}Template")
else
markdown_engine_prefix
end
# Tell tilt to use that engine
::Tilt.prefer(markdown_engine_klass)
end
rescue LoadError
logger.warn "Requested Markdown engine (#{markdown_engine}) not found. Maybe the gem needs to be installed and required?"
end
end
end
alias :included :registered
end
end
end
end