Class: Jekyll::MarkdownConverter

Inherits:
Converter show all
Defined in:
lib/jekyll/converters/markdown.rb

Constant Summary

Constants inherited from Plugin

Plugin::PRIORITIES

Instance Method Summary collapse

Methods inherited from Converter

#initialize, pygments_prefix, #pygments_prefix, pygments_suffix, #pygments_suffix

Methods inherited from Plugin

<=>, inherited, #initialize, priority, safe, subclasses

Constructor Details

This class inherits a constructor from Jekyll::Converter

Instance Method Details

#convert(content) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/jekyll/converters/markdown.rb', line 77

def convert(content)
  setup
  case @config['markdown']
    when 'kramdown'
      # Check for use of coderay
      if @config['kramdown']['use_coderay']
        Kramdown::Document.new(content, {
          :auto_ids      => @config['kramdown']['auto_ids'],
          :footnote_nr   => @config['kramdown']['footnote_nr'],
          :entity_output => @config['kramdown']['entity_output'],
          :toc_levels    => @config['kramdown']['toc_levels'],

          :coderay_wrap               => @config['kramdown']['coderay']['coderay_wrap'],
          :coderay_line_numbers       => @config['kramdown']['coderay']['coderay_line_numbers'],
          :coderay_line_number_start  => @config['kramdown']['coderay']['coderay_line_number_start'],
          :coderay_tab_width          => @config['kramdown']['coderay']['coderay_tab_width'],
          :coderay_bold_every         => @config['kramdown']['coderay']['coderay_bold_every'],
          :coderay_css                => @config['kramdown']['coderay']['coderay_css']
        }).to_html
      else
        # not using coderay
        Kramdown::Document.new(content, {
          :auto_ids      => @config['kramdown']['auto_ids'],
          :footnote_nr   => @config['kramdown']['footnote_nr'],
          :entity_output => @config['kramdown']['entity_output'],
          :toc_levels    => @config['kramdown']['toc_levels']
        }).to_html
      end
    when 'rdiscount'
      RDiscount.new(content, *@rdiscount_extensions).to_html
    when 'maruku'
      Maruku.new(content).to_html
  end
end

#matches(ext) ⇒ Object



69
70
71
# File 'lib/jekyll/converters/markdown.rb', line 69

def matches(ext)
  ext =~ /(markdown|mkdn?|md)/i
end

#output_ext(ext) ⇒ Object



73
74
75
# File 'lib/jekyll/converters/markdown.rb', line 73

def output_ext(ext)
  ".html"
end

#setupObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/jekyll/converters/markdown.rb', line 9

def setup
  return if @setup
  # Set the Markdown interpreter (and Maruku self.config, if necessary)
  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'
      begin
        require 'rdiscount'

        # Load rdiscount extensions
        @rdiscount_extensions = @config['rdiscount']['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 rdiscount'
        raise FatalException.new("Missing dependency: rdiscount")
      end
    when 'maruku'
      begin
        require 'maruku'

        if @config['maruku']['use_divs']
          require 'maruku/ext/div'
          STDERR.puts 'Maruku: Using extended syntax for div elements.'
        end

        if @config['maruku']['use_tex']
          require 'maruku/ext/math'
          STDERR.puts "Maruku: Using LaTeX extension. Images in `#{@config['maruku']['png_dir']}`."

          # Switch off MathML output
          MaRuKu::Globals[:html_math_output_mathml] = false
          MaRuKu::Globals[:html_math_engine] = 'none'

          # Turn on math to PNG support with blahtex
          # Resulting PNGs stored in `images/latex`
          MaRuKu::Globals[:html_math_output_png] = true
          MaRuKu::Globals[:html_png_engine] =  @config['maruku']['png_engine']
          MaRuKu::Globals[:html_png_dir] = @config['maruku']['png_dir']
          MaRuKu::Globals[:html_png_url] = @config['maruku']['png_url']
        end
      rescue LoadError
        STDERR.puts 'You are missing a library required for Markdown. Please run:'
        STDERR.puts '  $ [sudo] gem install maruku'
        raise FatalException.new("Missing dependency: maruku")
      end
    else
      STDERR.puts "Invalid Markdown processor: #{@config['markdown']}"
      STDERR.puts "  Valid options are [ maruku | rdiscount | kramdown ]"
      raise FatalException.new("Invalid Markdown process: #{@config['markdown']}")
  end
  @setup = true
end