Add Kramdown support and tests
This commit is contained in:
parent
53b999418c
commit
ac7a0cc95f
|
@ -56,6 +56,10 @@ opts = OptionParser.new do |opts|
|
||||||
options['markdown'] = 'rdiscount'
|
options['markdown'] = 'rdiscount'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
opts.on("--kramdown", "Use kramdown gem for Markdown") do
|
||||||
|
options['markdown'] = 'kramdown'
|
||||||
|
end
|
||||||
|
|
||||||
opts.on("--time [TIME]", "Time to generate the site for") do |time|
|
opts.on("--time [TIME]", "Time to generate the site for") do |time|
|
||||||
options['time'] = Time.parse(time)
|
options['time'] = Time.parse(time)
|
||||||
end
|
end
|
||||||
|
|
|
@ -48,6 +48,13 @@ Feature: Site configuration
|
||||||
Then the _site directory should exist
|
Then the _site directory should exist
|
||||||
And I should see "<a href="http://google.com">Google</a>" in "_site/index.html"
|
And I should see "<a href="http://google.com">Google</a>" in "_site/index.html"
|
||||||
|
|
||||||
|
Scenario: Use Kramdown for markup
|
||||||
|
Given I have an "index.markdown" page that contains "[Google](http://google.com)"
|
||||||
|
And I have a configuration file with "markdown" set to "kramdown"
|
||||||
|
When I run jekyll
|
||||||
|
Then the _site directory should exist
|
||||||
|
And I should see "<a href="http://google.com">Google</a>" in "_site/index.html"
|
||||||
|
|
||||||
Scenario: Use Maruku for markup
|
Scenario: Use Maruku for markup
|
||||||
Given I have an "index.markdown" page that contains "[Google](http://google.com)"
|
Given I have an "index.markdown" page that contains "[Google](http://google.com)"
|
||||||
And I have a configuration file with "markdown" set to "maruku"
|
And I have a configuration file with "markdown" set to "maruku"
|
||||||
|
|
|
@ -10,6 +10,15 @@ module Jekyll
|
||||||
return if @setup
|
return if @setup
|
||||||
# Set the Markdown interpreter (and Maruku self.config, if necessary)
|
# Set the Markdown interpreter (and Maruku self.config, if necessary)
|
||||||
case @config['markdown']
|
case @config['markdown']
|
||||||
|
when 'kramdown'
|
||||||
|
begin
|
||||||
|
require 'kramdown'
|
||||||
|
|
||||||
|
rescue LoadError
|
||||||
|
STDERR.puts 'You are missing a library required for Markdown. Please run:'
|
||||||
|
STDERR.puts ' $ [sudo] gem install kramdown'
|
||||||
|
raise FatalException.new("Missing dependency: kramdown")
|
||||||
|
end
|
||||||
when 'rdiscount'
|
when 'rdiscount'
|
||||||
begin
|
begin
|
||||||
require 'rdiscount'
|
require 'rdiscount'
|
||||||
|
@ -52,7 +61,7 @@ module Jekyll
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
STDERR.puts "Invalid Markdown processor: #{@config['markdown']}"
|
STDERR.puts "Invalid Markdown processor: #{@config['markdown']}"
|
||||||
STDERR.puts " Valid options are [ maruku | rdiscount ]"
|
STDERR.puts " Valid options are [ maruku | rdiscount | kramdown ]"
|
||||||
raise FatalException.new("Invalid Markdown process: #{@config['markdown']}")
|
raise FatalException.new("Invalid Markdown process: #{@config['markdown']}")
|
||||||
end
|
end
|
||||||
@setup = true
|
@setup = true
|
||||||
|
@ -69,6 +78,8 @@ module Jekyll
|
||||||
def convert(content)
|
def convert(content)
|
||||||
setup
|
setup
|
||||||
case @config['markdown']
|
case @config['markdown']
|
||||||
|
when 'kramdown'
|
||||||
|
Kramdown::Document.new(content).to_html
|
||||||
when 'rdiscount'
|
when 'rdiscount'
|
||||||
RDiscount.new(content, *@rdiscount_extensions).to_html
|
RDiscount.new(content, *@rdiscount_extensions).to_html
|
||||||
when 'maruku'
|
when 'maruku'
|
||||||
|
|
|
@ -5,6 +5,7 @@ require File.join(File.dirname(__FILE__), *%w[.. lib jekyll])
|
||||||
|
|
||||||
require 'RedCloth'
|
require 'RedCloth'
|
||||||
require 'rdiscount'
|
require 'rdiscount'
|
||||||
|
require 'kramdown'
|
||||||
|
|
||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require 'redgreen'
|
require 'redgreen'
|
||||||
|
|
|
@ -112,5 +112,16 @@ CONTENT
|
||||||
assert_match %r{<em>FINISH HIM</em>}, @result
|
assert_match %r{<em>FINISH HIM</em>}, @result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "using Kramdown" do
|
||||||
|
setup do
|
||||||
|
create_post(@content, 'markdown' => 'kramdown')
|
||||||
|
end
|
||||||
|
|
||||||
|
should "parse correctly" do
|
||||||
|
assert_match %r{<em>FIGHT!</em>}, @result
|
||||||
|
assert_match %r{<em>FINISH HIM</em>}, @result
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue