class Jekyll::Converters::Markdown

Markdown converter. For more info on converters see jekyllrb.com/docs/plugins/converters/

Public Instance Methods

convert(content) click to toggle source

Logic to do the content conversion.

content - String content of file (without front matter).

Returns a String of the converted content.

# File lib/jekyll/converters/markdown.rb, line 83
def convert(content)
  setup
  @cache.getset(content) do
    @parser.convert(content)
  end
end
extname_list() click to toggle source
# File lib/jekyll/converters/markdown.rb, line 90
def extname_list
  @extname_list ||= @config["markdown_ext"].split(",").map! { |e| ".#{e.downcase}" }
end
get_processor() click to toggle source

RuboCop does not allow reader methods to have names starting with ‘get_` To ensure compatibility, this check has been disabled on this method

rubocop:disable Naming/AccessorMethodName

# File lib/jekyll/converters/markdown.rb, line 35
def get_processor
  case @config["markdown"].downcase
  when "kramdown" then KramdownParser.new(@config)
  else
    custom_processor
  end
end
matches(ext) click to toggle source

Does the given extension match this converter’s list of acceptable extensions? Takes one argument: the file’s extension (including the dot).

ext - The String extension to check.

Returns true if it matches, false otherwise.

# File lib/jekyll/converters/markdown.rb, line 65
def matches(ext)
  extname_list.include?(ext.downcase)
end
output_ext(_ext) click to toggle source

Public: The extension to be given to the output file (including the dot).

ext - The String extension or original file.

Returns The String output file extension.

# File lib/jekyll/converters/markdown.rb, line 74
def output_ext(_ext)
  ".html"
end
setup() click to toggle source
# File lib/jekyll/converters/markdown.rb, line 12
def setup
  return if @setup ||= false

  unless (@parser = get_processor)
    if @config["safe"]
      Jekyll.logger.warn "Build Warning:", "Custom processors are not loaded in safe mode"
    end

    Jekyll.logger.error "Markdown processor:",
                        "#{@config["markdown"].inspect} is not a valid Markdown processor."
    Jekyll.logger.error "", "Available processors are: #{valid_processors.join(", ")}"
    Jekyll.logger.error ""
    raise Errors::FatalException, "Invalid Markdown processor given: #{@config["markdown"]}"
  end

  @cache = Jekyll::Cache.new("Jekyll::Converters::Markdown")
  @setup = true
end
third_party_processors() click to toggle source

Public: A list of processors that you provide via plugins.

Returns an array of symbols

# File lib/jekyll/converters/markdown.rb, line 55
def third_party_processors
  self.class.constants - [:KramdownParser, :PRIORITIES]
end
valid_processors() click to toggle source

Public: Provides you with a list of processors comprised of the ones we support internally and the ones that you have provided to us (if they’re whitelisted for use in safe mode).

Returns an array of symbols.

# File lib/jekyll/converters/markdown.rb, line 48
def valid_processors
  [:kramdown] + third_party_processors
end

Private Instance Methods

custom_class_allowed?(parser_name) click to toggle source

Private: Determine whether a class name is an allowed custom

markdown class name.

parser_name - the name of the parser class

Returns true if the parser name contains only alphanumeric characters and is defined within Jekyll::Converters::Markdown

# File lib/jekyll/converters/markdown.rb, line 108
def custom_class_allowed?(parser_name)
  parser_name !~ %r![^A-Za-z0-9_]! && self.class.constants.include?(parser_name.to_sym)
end
custom_processor() click to toggle source
# File lib/jekyll/converters/markdown.rb, line 96
def custom_processor
  converter_name = @config["markdown"]
  self.class.const_get(converter_name).new(@config) if custom_class_allowed?(converter_name)
end