Commit 464fa18e authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Create JsDuck::Markdown wrapper class.

This will automatically choose an available Markdown implementation.

Additionally added missing require statement to doc_formatter_spec.
parent 1f3192f0
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-
require 'rubygems'
require 'rdiscount'
require 'strscan'
require 'jsduck/markdown'
require 'jsduck/logger'
require 'jsduck/inline_img'
require 'jsduck/inline_video'
@@ -310,7 +310,7 @@ module JsDuck
      # code-blocks beginning with empty line.
      input.gsub!(/<pre>(<code>)?\n?/, "<pre>\\1")

      replace(RDiscount.new(input).to_html)
      replace(JsDuck::Markdown.to_html(input))
    end

    # Shortens text

lib/jsduck/markdown.rb

0 → 100644
+46 −0
Original line number Diff line number Diff line

module JsDuck

  # Wrapper which chooses the available Markdown implementation and
  # provides a uniform interface to it.
  #
  # Possible engines in order of preference:
  #
  # - rdiscount
  # - kramdown
  #
  class Markdown

    if RUBY_PLATFORM == "java"
      require "kramdown"
      begin
        @@engine = :kramdown
      rescue LoadError
        throw "ERROR: Kramdown gem not available."
      end
    else
      begin
        require "rdiscount"
        @@engine = :rdiscount
      rescue LoadError
        begin
          require "kramdown"
          @@engine = :kramdown
        rescue LoadError
          throw "ERROR: Neither RDiscount nor Kramdown gem available."
        end
      end
    end

    # Converts Markdown text into HTML
    def self.to_html(input)
      if @@engine == :rdiscount
        RDiscount.new(input).to_html
      else
        Kramdown::Document.new(input).to_html
      end
    end

  end

end
+1 −0
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-
require "jsduck/doc_formatter"
require "jsduck/relations"
require "jsduck/class"

describe JsDuck::DocFormatter do