Merge remote-tracking branch 'MattHall/redcarpet'
This commit is contained in:
		
						commit
						2ad0fbc8ff
					
				| 
						 | 
				
			
			@ -82,6 +82,10 @@ opts = OptionParser.new do |opts|
 | 
			
		|||
  opts.on("--rdiscount", "Use rdiscount gem for Markdown") do
 | 
			
		||||
    options['markdown'] = 'rdiscount'
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  opts.on("--redcarpet", "Use redcarpet gem for Markdown") do
 | 
			
		||||
    options['markdown'] = 'redcarpet'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  opts.on("--kramdown", "Use kramdown gem for Markdown") do
 | 
			
		||||
    options['markdown'] = 'kramdown'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,6 +55,13 @@ Feature: Site configuration
 | 
			
		|||
    Then the _site directory should exist
 | 
			
		||||
    And I should see "<a href="http://google.com">Google</a>" in "_site/index.html"
 | 
			
		||||
 | 
			
		||||
  Scenario: Use Redcarpet 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 "redcarpet"
 | 
			
		||||
    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
 | 
			
		||||
    Given I have an "index.markdown" page that contains "[Google](http://google.com)"
 | 
			
		||||
    And I have a configuration file with "markdown" set to "maruku"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,8 @@ Gem::Specification.new do |s|
 | 
			
		|||
  s.add_development_dependency('cucumber', ">= 0.10.0")
 | 
			
		||||
  s.add_development_dependency('RedCloth', ">= 4.2.1")
 | 
			
		||||
  s.add_development_dependency('rdiscount', ">= 1.6.5")
 | 
			
		||||
 | 
			
		||||
  s.add_development_dependency('redcarpet', ">= 1.9.0")
 | 
			
		||||
  
 | 
			
		||||
  # = MANIFEST =
 | 
			
		||||
  s.files = %w[
 | 
			
		||||
    History.txt
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,6 +76,9 @@ module Jekyll
 | 
			
		|||
    'rdiscount'    => {
 | 
			
		||||
      'extensions' => []
 | 
			
		||||
    },
 | 
			
		||||
    'redcarpet'    => {
 | 
			
		||||
      'extensions' => []
 | 
			
		||||
    },
 | 
			
		||||
    'kramdown'        => {
 | 
			
		||||
      'auto_ids'      => true,
 | 
			
		||||
      'footnote_nr'   => 1,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,15 @@ module Jekyll
 | 
			
		|||
      return if @setup
 | 
			
		||||
      # Set the Markdown interpreter (and Maruku self.config, if necessary)
 | 
			
		||||
      case @config['markdown']
 | 
			
		||||
        when 'redcarpet'
 | 
			
		||||
          begin
 | 
			
		||||
            require 'redcarpet'
 | 
			
		||||
            @redcarpet_extensions = @config['redcarpet']['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 redcarpet'
 | 
			
		||||
            raise FatalException.new("Missing dependency: redcarpet")
 | 
			
		||||
          end
 | 
			
		||||
        when 'kramdown'
 | 
			
		||||
          begin
 | 
			
		||||
            require 'kramdown'
 | 
			
		||||
| 
						 | 
				
			
			@ -77,6 +86,8 @@ module Jekyll
 | 
			
		|||
    def convert(content)
 | 
			
		||||
      setup
 | 
			
		||||
      case @config['markdown']
 | 
			
		||||
        when 'redcarpet'
 | 
			
		||||
          Redcarpet.new(content, *@redcarpet_extensions).to_html
 | 
			
		||||
        when 'kramdown'
 | 
			
		||||
          # Check for use of coderay
 | 
			
		||||
          if @config['kramdown']['use_coderay']
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@ require 'jekyll'
 | 
			
		|||
require 'RedCloth'
 | 
			
		||||
require 'rdiscount'
 | 
			
		||||
require 'kramdown'
 | 
			
		||||
require 'redcarpet'
 | 
			
		||||
 | 
			
		||||
require 'redgreen' if RUBY_VERSION < '1.9'
 | 
			
		||||
require 'shoulda'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
require File.dirname(__FILE__) + '/helper'
 | 
			
		||||
 | 
			
		||||
class TestRedcarpet < Test::Unit::TestCase
 | 
			
		||||
  context "redcarpet" do
 | 
			
		||||
    setup do
 | 
			
		||||
      config = {
 | 
			
		||||
        'redcarpet' => { 'extensions' => ['smart'] },
 | 
			
		||||
        'markdown' => 'redcarpet'
 | 
			
		||||
      }
 | 
			
		||||
      @markdown = MarkdownConverter.new config
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    should "pass redcarpet options" do
 | 
			
		||||
      assert_equal "<h1>Some Header</h1>", @markdown.convert('# Some Header #').strip
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    should "pass redcarpet extensions" do
 | 
			
		||||
      assert_equal "<p>“smart”</p>", @markdown.convert('"smart"').strip
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -125,5 +125,16 @@ CONTENT
 | 
			
		|||
        assert_match %r{<em>FINISH HIM</em>}, @result
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    context "using Redcarpet" do
 | 
			
		||||
      setup do
 | 
			
		||||
        create_post(@content, 'markdown' => 'redcarpet')
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      should "parse correctly" do
 | 
			
		||||
        assert_match %r{<em>FIGHT!</em>}, @result
 | 
			
		||||
        assert_match %r{<em>FINISH HIM</em>}, @result
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue