From 4d017b4fed9ea489b8772e9d0923cbed788c5957 Mon Sep 17 00:00:00 2001 From: Jordon Date: Sat, 15 Jun 2013 05:03:53 -0500 Subject: [PATCH 1/4] Use $stderr, not STDERR, $stderr points to STDERR. --- lib/jekyll/converters/markdown.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/converters/markdown.rb b/lib/jekyll/converters/markdown.rb index 485cac82..bd30fafe 100644 --- a/lib/jekyll/converters/markdown.rb +++ b/lib/jekyll/converters/markdown.rb @@ -18,8 +18,8 @@ module Jekyll when 'maruku' MarukuParser.new @config else - STDERR.puts "Invalid Markdown processor: #{@config['markdown']}" - STDERR.puts " Valid options are [ maruku | rdiscount | kramdown | redcarpet ]" + $stderr.puts "Invalid Markdown processor: #{@config['markdown']}" + $stderr.puts " Valid options are [ maruku | rdiscount | kramdown | redcarpet ]" raise FatalException.new("Invalid Markdown process: #{@config['markdown']}") end @setup = true From 626d54a812e33d9fb43bd3caec8d1296733f6afc Mon Sep 17 00:00:00 2001 From: Jordon Date: Sat, 15 Jun 2013 05:04:47 -0500 Subject: [PATCH 2/4] New is implied by `raise`, 2nd is the message. --- lib/jekyll/converters/markdown.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/converters/markdown.rb b/lib/jekyll/converters/markdown.rb index bd30fafe..6ee0fa50 100644 --- a/lib/jekyll/converters/markdown.rb +++ b/lib/jekyll/converters/markdown.rb @@ -20,7 +20,7 @@ module Jekyll else $stderr.puts "Invalid Markdown processor: #{@config['markdown']}" $stderr.puts " Valid options are [ maruku | rdiscount | kramdown | redcarpet ]" - raise FatalException.new("Invalid Markdown process: #{@config['markdown']}") + raise FatalException, "Invalid Markdown process: #{@config['markdown']}" end @setup = true end From c759a7a75f32ac8f3ab157a9188c80f59fc58344 Mon Sep 17 00:00:00 2001 From: Jordon Date: Sat, 15 Jun 2013 06:00:47 -0500 Subject: [PATCH 3/4] Allow custom Markdown processors. --- lib/jekyll/converters/markdown.rb | 28 ++++++++++--------- test/test_site.rb | 46 +++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 13 deletions(-) diff --git a/lib/jekyll/converters/markdown.rb b/lib/jekyll/converters/markdown.rb index 6ee0fa50..1a18c96b 100644 --- a/lib/jekyll/converters/markdown.rb +++ b/lib/jekyll/converters/markdown.rb @@ -8,20 +8,22 @@ module Jekyll def setup return if @setup - @parser = case @config['markdown'] - when 'redcarpet' - RedcarpetParser.new @config - when 'kramdown' - KramdownParser.new @config - when 'rdiscount' - RDiscountParser.new @config - when 'maruku' - MarukuParser.new @config + @parser = + case @config['markdown'] + when 'redcarpet' then RedcarpetParser.new(@config) + when 'kramdown' then KramdownParser.new(@config) + when 'rdiscount' then RDiscountParser.new(@config) + when 'maruku' then MarukuParser.new(@config) else - $stderr.puts "Invalid Markdown processor: #{@config['markdown']}" - $stderr.puts " Valid options are [ maruku | rdiscount | kramdown | redcarpet ]" - raise FatalException, "Invalid Markdown process: #{@config['markdown']}" - end + # So they can't try some tricky bullshit or go down the ancestor chain, I hope. + if @config['markdown'] !~ /[^A-Za-z0-9]/ && self.class.constants.include?(@config['markdown'].to_sym) + self.class.const_get(@config['markdown']).new(@config) + else + $stderr.puts "Invalid Markdown processor: #{@config['markdown']}" + $stderr.puts " Valid options are [ maruku | rdiscount | kramdown | redcarpet ]" + raise FatalException, "Invalid Markdown process: #{@config['markdown']}" + end + end @setup = true end diff --git a/test/test_site.rb b/test/test_site.rb index 35359a2a..d6a2b0fa 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -255,6 +255,52 @@ class TestSite < Test::Unit::TestCase end end + context 'using a non-default markdown processor in the configuration' do + should 'use the non-default markdown processor' do + class Jekyll::Converters::Markdown::CustomMarkdown + def initialize(*args) + @args = args + end + + def convert(*args) + "" + end + end + + custom_processor = "CustomMarkdown" + s = Site.new(Jekyll.configuration.merge({ 'markdown' => custom_processor })) + assert_nothing_raised do + s.process + end + + # Do some cleanup, we don't like straggling stuff's. + Jekyll::Converters::Markdown.send(:remove_const, :CustomMarkdown) + end + + should 'ignore, if there are any bad characters in the class name' do + module Jekyll::Converters::Markdown::Custom + class Markdown + def initialize(*args) + @args = args + end + + def convert(*args) + "" + end + end + end + + bad_processor = "Custom::Markdown" + s = Site.new(Jekyll.configuration.merge({ 'markdown' => bad_processor })) + assert_raise Jekyll::FatalException do + s.process + end + + # Do some cleanup, we don't like straggling stuff's. + Jekyll::Converters::Markdown.send(:remove_const, :Custom) + end + end + context 'with an invalid markdown processor in the configuration' do should 'not throw an error at initialization time' do bad_processor = 'not a processor name' From 31bebf0f9ed2bb6bf93b741693b949e7c084442d Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Wed, 25 Dec 2013 16:11:30 -0600 Subject: [PATCH 4/4] Depend on Jekyll.logger.error, not $stderr --- lib/jekyll/converters/markdown.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/converters/markdown.rb b/lib/jekyll/converters/markdown.rb index 1a18c96b..9727f5a4 100644 --- a/lib/jekyll/converters/markdown.rb +++ b/lib/jekyll/converters/markdown.rb @@ -19,8 +19,8 @@ module Jekyll if @config['markdown'] !~ /[^A-Za-z0-9]/ && self.class.constants.include?(@config['markdown'].to_sym) self.class.const_get(@config['markdown']).new(@config) else - $stderr.puts "Invalid Markdown processor: #{@config['markdown']}" - $stderr.puts " Valid options are [ maruku | rdiscount | kramdown | redcarpet ]" + Jekyll.logger.error "Invalid Markdown Processor:", "#{@config['markdown']}" + Jekyll.logger.error "", "Valid options are [ maruku | rdiscount | kramdown | redcarpet ]" raise FatalException, "Invalid Markdown process: #{@config['markdown']}" end end