Skip to content

Instantly share code, notes, and snippets.

@hedgehog
Created June 12, 2012 02:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hedgehog/2914016 to your computer and use it in GitHub Desktop.
Save hedgehog/2914016 to your computer and use it in GitHub Desktop.
middleman issue #442 for version 2.0.15
require "tilt"
require "redcarpet"
puts 'loading custom...'
module ::Middleman
module Renderers
class RedcarpetTemplate < ::Tilt::RedcarpetTemplate::Redcarpet2
# Overwrite built-in Tilt version.
# Don't overload :renderer option with smartypants
# Supper renderer-level options
def generate_renderer
return options.delete(:renderer) if options.has_key?(:renderer)
# Pick a renderer
renderer = ::Redcarpet::Render::HTML
# Support SmartyPants
if options.delete(:smartypants)
renderer = Class.new(renderer) do
include ::Redcarpet::Render::SmartyPants
end
end
# Renderer Options
possible_render_opts = [:filter_html, :no_images, :no_links, :no_styles, :safe_links_only, :with_toc_data, :hard_wrap, :xhtml]
render_options = possible_render_opts.inject({}) do |sum, opt|
sum[opt] = options.delete(opt) if options.has_key?(opt)
sum
end
puts options
puts render_options
renderer.new(render_options)
end
end
::Tilt.register RedcarpetTemplate, 'markdown', 'mkd', 'md'
end
end
module ::Middleman::Renderers::Markdown
class << self
def registered(app)
app.extend ClassMethods
app.set :markdown_engine, :maruku
if !app.respond_to? :markdown_engine_prefix
app.set :markdown_engine_prefix, ::Tilt
end
app.after_configuration do
# Look for the user's preferred engine
if app.settings.markdown_engine == :redcarpet
markdown_engine_klass = ::Middleman::Renderers::RedcarpetTemplate
elsif app.settings.markdown_engine.nil?
# Map symbols to classes
markdown_engine_klass = if app.settings.markdown_engine.is_a? Symbol
engine = app.settings.markdown_engine.to_s
engine = engine == "rdiscount" ? "RDiscount" : engine.camelize
markdown_engine_prefix.const_get("#{engine}Template")
else
markdown_engine_prefix
end
end
puts app.settings.markdown
puts markdown_engine_klass
::Tilt.prefer(markdown_engine_klass)
end
end
alias :included :registered
end
module ClassMethods
def tilt_template_from_symbol(engine)
engine = engine.to_s
engine = engine == "rdiscount" ? "RDiscount" : engine.camelize
settings.markdown_engine_prefix.const_get("#{engine}Template")
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment