From a56eeb828924c887b6e22d0372109b7911cfd83d Mon Sep 17 00:00:00 2001 From: Christos Trochalakis Date: Wed, 2 Jun 2010 11:37:07 +0300 Subject: [PATCH] Add support for rdiscount extensions Specify extensions at your _config.yml file: ... rdiscount: extensions: [smart, autolink] Available extensions can be found here: http://rdoc.info/projects/rtomayko/rdiscount closes #173 --- lib/jekyll.rb | 3 +++ lib/jekyll/converters/markdown.rb | 5 ++++- test/test_rdiscount.rb | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 test/test_rdiscount.rb diff --git a/lib/jekyll.rb b/lib/jekyll.rb index 9e8def36..9cd72b52 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -71,6 +71,9 @@ module Jekyll 'png_engine' => 'blahtex', 'png_dir' => 'images/latex', 'png_url' => '/images/latex' + }, + 'rdiscount' => { + 'extensions' => [] } } diff --git a/lib/jekyll/converters/markdown.rb b/lib/jekyll/converters/markdown.rb index b4bc2475..317b1487 100644 --- a/lib/jekyll/converters/markdown.rb +++ b/lib/jekyll/converters/markdown.rb @@ -13,6 +13,9 @@ module Jekyll when 'rdiscount' begin require 'rdiscount' + + # Load rdiscount extensions + @rdiscount_extensions = @config['rdiscount']['extensions'].map { |e| e.to_sym } rescue LoadError STDERR.puts 'You are missing a library required for Markdown. Please run:' STDERR.puts ' $ [sudo] gem install rdiscount' @@ -67,7 +70,7 @@ module Jekyll setup case @config['markdown'] when 'rdiscount' - RDiscount.new(content).to_html + RDiscount.new(content, *@rdiscount_extensions).to_html when 'maruku' Maruku.new(content).to_html end diff --git a/test/test_rdiscount.rb b/test/test_rdiscount.rb new file mode 100644 index 00000000..2cb40d6d --- /dev/null +++ b/test/test_rdiscount.rb @@ -0,0 +1,18 @@ +require File.dirname(__FILE__) + '/helper' + +class TestRdiscount < Test::Unit::TestCase + + context "rdiscount" do + setup do + config = { + 'rdiscount' => { 'extensions' => ['smart'] }, + 'markdown' => 'rdiscount' + } + @markdown = MarkdownConverter.new config + end + + should "pass rdiscount extensions" do + assert_equal "

“smart”

", @markdown.convert('"smart"').strip + end + end +end