diff --git a/middleman-core/lib/middleman-core/renderers/markdown.rb b/middleman-core/lib/middleman-core/renderers/markdown.rb index 79df7d9d..a876d808 100644 --- a/middleman-core/lib/middleman-core/renderers/markdown.rb +++ b/middleman-core/lib/middleman-core/renderers/markdown.rb @@ -10,7 +10,6 @@ module Middleman # Once registered def registered(app) # Set our preference for a markdown engine - # TODO: Find a JRuby-compatible version app.set :markdown_engine, :maruku app.set :markdown_engine_prefix, ::Tilt @@ -54,4 +53,4 @@ module Middleman end end -end \ No newline at end of file +end diff --git a/middleman-core/lib/middleman-core/renderers/redcarpet.rb b/middleman-core/lib/middleman-core/renderers/redcarpet.rb index 7a50c018..446d6939 100644 --- a/middleman-core/lib/middleman-core/renderers/redcarpet.rb +++ b/middleman-core/lib/middleman-core/renderers/redcarpet.rb @@ -7,12 +7,12 @@ module Middleman # Overwrite built-in Tilt version. # Don't overload :renderer option with smartypants - # Supper renderer-level options + # Support renderer-level options def generate_renderer return options.delete(:renderer) if options.has_key?(:renderer) # Pick a renderer - renderer = ::Redcarpet::Render::HTML + renderer = MiddlemanRedcarpetHTML # Support SmartyPants if options.delete(:smartypants) @@ -28,11 +28,31 @@ module Middleman sum[opt] = options.delete(opt) if options.has_key?(opt) sum end - + renderer.new(render_options) end + + def evaluate(scope, locals, &block) + if @engine.renderer.respond_to? :middleman_app= + @engine.renderer.middleman_app = scope + end + super + end + end + + # Custom Redcarpet renderer that uses our helpers for images and links + class MiddlemanRedcarpetHTML < ::Redcarpet::Render::HTML + attr_accessor :middleman_app + + def image(link, title, alt_text) + middleman_app.image_tag(link, :title => title, :alt => alt_text) + end + + def link(link, title, content) + middleman_app.link_to(content, link, :title => title) + end end ::Tilt.register RedcarpetTemplate, 'markdown', 'mkd', 'md' end -end \ No newline at end of file +end