Merge branch 'redcarpet-update' of https://github.com/tombell/jekyll into tombell-redcarpet-update
This commit is contained in:
commit
098da3d3fa
|
@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
||||||
s.add_runtime_dependency('directory_watcher', "~> 1.1")
|
s.add_runtime_dependency('directory_watcher', "~> 1.1")
|
||||||
s.add_runtime_dependency('maruku', "~> 0.5")
|
s.add_runtime_dependency('maruku', "~> 0.5")
|
||||||
s.add_runtime_dependency('kramdown', "~> 0.13.4")
|
s.add_runtime_dependency('kramdown', "~> 0.13.4")
|
||||||
s.add_runtime_dependency('pygments.rb', "~> 0.2.12")
|
s.add_runtime_dependency('pygments.rb', "~> 0.3.2")
|
||||||
|
|
||||||
s.add_development_dependency('rake', "~> 0.9")
|
s.add_development_dependency('rake', "~> 0.9")
|
||||||
s.add_development_dependency('rdoc', "~> 3.11")
|
s.add_development_dependency('rdoc', "~> 3.11")
|
||||||
|
@ -38,7 +38,7 @@ Gem::Specification.new do |s|
|
||||||
s.add_development_dependency('cucumber', "1.1")
|
s.add_development_dependency('cucumber', "1.1")
|
||||||
s.add_development_dependency('RedCloth', "~> 4.2")
|
s.add_development_dependency('RedCloth', "~> 4.2")
|
||||||
s.add_development_dependency('rdiscount', "~> 1.6")
|
s.add_development_dependency('rdiscount', "~> 1.6")
|
||||||
s.add_development_dependency('redcarpet', "~> 1.9")
|
s.add_development_dependency('redcarpet', "~> 2.1.1")
|
||||||
|
|
||||||
# = MANIFEST =
|
# = MANIFEST =
|
||||||
s.files = %w[
|
s.files = %w[
|
||||||
|
|
|
@ -8,12 +8,28 @@ module Jekyll
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
return if @setup
|
return if @setup
|
||||||
# Set the Markdown interpreter (and Maruku self.config, if necessary)
|
|
||||||
case @config['markdown']
|
case @config['markdown']
|
||||||
when 'redcarpet'
|
when 'redcarpet'
|
||||||
begin
|
begin
|
||||||
require 'redcarpet'
|
require 'redcarpet'
|
||||||
@redcarpet_extensions = @config['redcarpet']['extensions'].map { |e| e.to_sym }
|
|
||||||
|
@renderer ||= Class.new(Redcarpet::Render::HTML) do
|
||||||
|
def block_code(code, lang)
|
||||||
|
lang = lang && lang.split.first || "text"
|
||||||
|
output = add_code_tags(
|
||||||
|
Pygments.highlight(code, :lexer => lang, :options => { :encoding => 'utf-8' }),
|
||||||
|
lang
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_code_tags(code, lang)
|
||||||
|
code = code.sub(/<pre>/,'<pre><code class="' + lang + '">')
|
||||||
|
code = code.sub(/<\/pre>/,"</code></pre>")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@redcarpet_extensions = {}
|
||||||
|
@config['redcarpet']['extensions'].each { |e| @redcarpet_extensions[e.to_sym] = true }
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
STDERR.puts 'You are missing a library required for Markdown. Please run:'
|
STDERR.puts 'You are missing a library required for Markdown. Please run:'
|
||||||
STDERR.puts ' $ [sudo] gem install redcarpet'
|
STDERR.puts ' $ [sudo] gem install redcarpet'
|
||||||
|
@ -30,8 +46,6 @@ module Jekyll
|
||||||
when 'rdiscount'
|
when 'rdiscount'
|
||||||
begin
|
begin
|
||||||
require 'rdiscount'
|
require 'rdiscount'
|
||||||
|
|
||||||
# Load rdiscount extensions
|
|
||||||
@rdiscount_extensions = @config['rdiscount']['extensions'].map { |e| e.to_sym }
|
@rdiscount_extensions = @config['rdiscount']['extensions'].map { |e| e.to_sym }
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
STDERR.puts 'You are missing a library required for Markdown. Please run:'
|
STDERR.puts 'You are missing a library required for Markdown. Please run:'
|
||||||
|
@ -88,7 +102,10 @@ module Jekyll
|
||||||
setup
|
setup
|
||||||
case @config['markdown']
|
case @config['markdown']
|
||||||
when 'redcarpet'
|
when 'redcarpet'
|
||||||
Redcarpet.new(content, *@redcarpet_extensions).to_html
|
@redcarpet_extensions[:fenced_code_blocks] = !@redcarpet_extensions[:no_fenced_code_blocks]
|
||||||
|
@renderer.send :include, Redcarpet::Render::SmartyPants if @redcarpet_extensions[:smart]
|
||||||
|
markdown = Redcarpet::Markdown.new(@renderer.new(@redcarpet_extensions), @redcarpet_extensions)
|
||||||
|
markdown.render(content)
|
||||||
when 'kramdown'
|
when 'kramdown'
|
||||||
# Check for use of coderay
|
# Check for use of coderay
|
||||||
if @config['kramdown']['use_coderay']
|
if @config['kramdown']['use_coderay']
|
||||||
|
|
|
@ -4,7 +4,7 @@ class TestRedcarpet < Test::Unit::TestCase
|
||||||
context "redcarpet" do
|
context "redcarpet" do
|
||||||
setup do
|
setup do
|
||||||
config = {
|
config = {
|
||||||
'redcarpet' => { 'extensions' => ['smart'] },
|
'redcarpet' => { 'extensions' => ['smart', 'strikethrough', 'filter_html'] },
|
||||||
'markdown' => 'redcarpet'
|
'markdown' => 'redcarpet'
|
||||||
}
|
}
|
||||||
@markdown = MarkdownConverter.new config
|
@markdown = MarkdownConverter.new config
|
||||||
|
@ -14,8 +14,26 @@ class TestRedcarpet < Test::Unit::TestCase
|
||||||
assert_equal "<h1>Some Header</h1>", @markdown.convert('# Some Header #').strip
|
assert_equal "<h1>Some Header</h1>", @markdown.convert('# Some Header #').strip
|
||||||
end
|
end
|
||||||
|
|
||||||
should "pass redcarpet extensions" do
|
should "pass redcarpet SmartyPants options" do
|
||||||
assert_equal "<p>“smart”</p>", @markdown.convert('"smart"').strip
|
assert_equal "<p>“smart”</p>", @markdown.convert('"smart"').strip
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "pass redcarpet extensions" do
|
||||||
|
assert_equal "<p><del>deleted</del></p>", @markdown.convert('~~deleted~~').strip
|
||||||
|
end
|
||||||
|
|
||||||
|
should "pass redcarpet render options" do
|
||||||
|
assert_equal "<p><strong>bad code not here</strong>: i am bad</p>", @markdown.convert('**bad code not here**: <script>i am bad</script>').strip
|
||||||
|
end
|
||||||
|
|
||||||
|
should "render fenced code blocks" do
|
||||||
|
assert_equal "<div class=\"highlight\"><pre><code class=\"ruby\"><span class=\"nb\">puts</span> <span class=\"s2\">"Hello world"</span>\n</code></pre>\n</div>", @markdown.convert(
|
||||||
|
<<-EOS
|
||||||
|
```ruby
|
||||||
|
puts "Hello world"
|
||||||
|
```
|
||||||
|
EOS
|
||||||
|
).strip
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue