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



69
70
71
72
73
74
75
76
77
# File 'lib/jekyll/converters/markdown.rb', line 69

def convert(content)
  setup
  case @config['markdown']
    when 'rdiscount'
      RDiscount.new(content, *@rdiscount_extensions).to_html
    when 'maruku'
      Maruku.new(content).to_html
  end
end

#matches(ext) ⇒ Object



61
62
63
# File 'lib/jekyll/converters/markdown.rb', line 61

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

#output_ext(ext) ⇒ Object



65
66
67
# File 'lib/jekyll/converters/markdown.rb', line 65

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
# 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 '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 ]"
      raise FatalException.new("Invalid Markdown process: #{@config['markdown']}")
  end
  @setup = true
end