diff --git a/middleman-more/features/markdown.feature b/middleman-more/features/markdown.feature index e270f23b..da542661 100644 --- a/middleman-more/features/markdown.feature +++ b/middleman-more/features/markdown.feature @@ -9,7 +9,7 @@ Feature: Markdown support Scenario: Markdown extensions (Maruku) Given the Server is running at "markdown-app" When I go to "/smarty_pants.html" - Then I should see "“" + Then I should see """ When I go to "/no_intra_emphasis.html" Then I should not see "" When I go to "/tables.html" diff --git a/middleman-more/features/markdown_redcarpet.feature b/middleman-more/features/markdown_redcarpet.feature index 0749f69f..39978bae 100644 --- a/middleman-more/features/markdown_redcarpet.feature +++ b/middleman-more/features/markdown_redcarpet.feature @@ -14,12 +14,15 @@ Feature: Markdown support :strikethrough => true, :lax_html_blocks => true, :space_after_headers => true, - :superscript => true#, :smartypants => true + :with_toc_data => true, + :superscript => true, + :smartypants => true, + :hard_wrap => true """ Given the Server is running at "markdown-app" - # When I go to "/smarty_pants.html" - # Then I should see "“" + When I go to "/smarty_pants.html" + Then I should see "“" When I go to "/no_intra_emphasis.html" Then I should not see "" When I go to "/tables.html" @@ -34,4 +37,7 @@ Feature: Markdown support Then I should not see "

" When I go to "/superscript.html" Then I should see "" - \ No newline at end of file + When I go to "/with_toc_data.html" + Then I should see "toc_0" + When I go to "/hard_wrap.html" + Then I should see "br" \ No newline at end of file diff --git a/middleman-more/fixtures/markdown-app/source/hard_wrap.html.markdown b/middleman-more/fixtures/markdown-app/source/hard_wrap.html.markdown new file mode 100644 index 00000000..1b8a675f --- /dev/null +++ b/middleman-more/fixtures/markdown-app/source/hard_wrap.html.markdown @@ -0,0 +1,2 @@ +hard +wrap \ No newline at end of file diff --git a/middleman-more/fixtures/markdown-app/source/with_toc_data.html.markdown b/middleman-more/fixtures/markdown-app/source/with_toc_data.html.markdown new file mode 100644 index 00000000..2ccb0be5 --- /dev/null +++ b/middleman-more/fixtures/markdown-app/source/with_toc_data.html.markdown @@ -0,0 +1,3 @@ +# Header 1 + +## Header 2 \ No newline at end of file diff --git a/middleman-more/lib/middleman-more/renderers/markdown.rb b/middleman-more/lib/middleman-more/renderers/markdown.rb index e898e32a..0079f81f 100644 --- a/middleman-more/lib/middleman-more/renderers/markdown.rb +++ b/middleman-more/lib/middleman-more/renderers/markdown.rb @@ -26,7 +26,10 @@ module Middleman app.after_configuration do # Look for the user's preferred engine - unless markdown_engine.nil? + if markdown_engine == :redcarpet + require "middleman-more/renderers/redcarpet" + ::Tilt.prefer(::Middleman::Renderers::RedcarpetTemplate) + elsif markdown_engine.nil? # Map symbols to classes markdown_engine_klass = if markdown_engine.is_a? Symbol @@ -37,14 +40,6 @@ module Middleman markdown_engine_prefix end - if markdown_engine == :redcarpet - # Forcably disable Redcarpet1 support. - # Tilt defaults to this if available, but the compat - # layer disables extensions. - require "redcarpet" - Object.send(:remove_const, :RedcarpetCompat) if defined? ::RedcarpetCompat - end - # Tell tilt to use that engine ::Tilt.prefer(markdown_engine_klass) end @@ -54,5 +49,6 @@ module Middleman alias :included :registered end end + end end diff --git a/middleman-more/lib/middleman-more/renderers/redcarpet.rb b/middleman-more/lib/middleman-more/renderers/redcarpet.rb new file mode 100644 index 00000000..62071474 --- /dev/null +++ b/middleman-more/lib/middleman-more/renderers/redcarpet.rb @@ -0,0 +1,40 @@ +require "redcarpet" + +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 + + renderer.new(render_options) + + + end + end + + ::Tilt.register RedcarpetTemplate, 'markdown', 'mkd', 'md' + end +end \ No newline at end of file