Merge pull request #1543 from maul-esel/fix-coderay

Add tests for special handling of kramdown's coderay options
This commit is contained in:
Matt Rogers 2013-10-17 06:35:43 -07:00
commit 0e784596a5
2 changed files with 33 additions and 6 deletions

View File

@ -16,7 +16,7 @@ module Jekyll
if @config['kramdown']['use_coderay'] if @config['kramdown']['use_coderay']
%w[wrap line_numbers line_numbers_start tab_width bold_every css default_lang].each do |opt| %w[wrap line_numbers line_numbers_start tab_width bold_every css default_lang].each do |opt|
key = "coderay_#{opt}" key = "coderay_#{opt}"
@config['kramdown'][key.to_sym] = @config['kramdown']['coderay'][key] unless @config['kramdown'].has_key?(key) @config['kramdown'][key] = @config['kramdown']['coderay'][key] unless @config['kramdown'].has_key?(key)
end end
end end

View File

@ -12,24 +12,51 @@ class TestKramdown < Test::Unit::TestCase
'footnote_nr' => 1, 'footnote_nr' => 1,
'entity_output' => 'as_char', 'entity_output' => 'as_char',
'toc_levels' => '1..6', 'toc_levels' => '1..6',
'smart_quotes' => 'lsquo,rsquo,ldquo,rdquo' 'smart_quotes' => 'lsquo,rsquo,ldquo,rdquo',
'use_coderay' => true,
'coderay_bold_every'=> 12,
'coderay' => {
'coderay_css' => :style,
'coderay_bold_every' => 8
}
} }
} }
@config = Jekyll.configuration(@config)
@markdown = Converters::Markdown.new(@config)
end end
# http://kramdown.rubyforge.org/converter/html.html#options # http://kramdown.rubyforge.org/converter/html.html#options
should "pass kramdown options" do should "pass kramdown options" do
markdown = Converters::Markdown.new(@config) 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 "convert quotes to smart quotes" do should "convert quotes to smart quotes" do
markdown = Converters::Markdown.new(@config) assert_match /<p>(&#8220;|“)Pit(&#8217;|)hy(&#8221;|”)<\/p>/, @markdown.convert(%{"Pit'hy"}).strip
assert_match /<p>(&#8220;|“)Pit(&#8217;|)hy(&#8221;|”)<\/p>/, markdown.convert(%{"Pit'hy"}).strip
override = { 'kramdown' => { 'smart_quotes' => 'lsaquo,rsaquo,laquo,raquo' } } override = { 'kramdown' => { 'smart_quotes' => 'lsaquo,rsaquo,laquo,raquo' } }
markdown = Converters::Markdown.new(@config.deep_merge(override)) markdown = Converters::Markdown.new(@config.deep_merge(override))
assert_match /<p>(&#171;|«)Pit(&#8250;|)hy(&#187;|»)<\/p>/, markdown.convert(%{"Pit'hy"}).strip assert_match /<p>(&#171;|«)Pit(&#8250;|)hy(&#187;|»)<\/p>/, markdown.convert(%{"Pit'hy"}).strip
end end
context "moving up nested coderay options" do
setup do
@markdown.convert('some markup')
@converter_config = @markdown.instance_variable_get(:@config)['kramdown']
end
should "work correctly" do
assert_equal :style, @converter_config['coderay_css']
end
should "also work for defaults" do
default = Jekyll::Configuration::DEFAULTS['kramdown']['coderay']['coderay_tab_width']
assert_equal default, @converter_config['coderay_tab_width']
end
should "not overwrite" do
assert_equal 12, @converter_config['coderay_bold_every']
end
end
end end
end end