class Kramdown::Parser::GitlabKramdown

Used for parsing documents in GitLab Flavored Markdown like format.

This is not 100% compatible with GFM used in GitLab application as it includes extensions available only in kramdown.

Public Class Methods

new(source, options) click to toggle source
Calls superclass method
# File lib/kramdown/parser/gitlab_kramdown.rb, line 20
def initialize(source, options)
  super

  @options[:gitlab_url] ||= 'https://gitlab.com'
  @options[:autolink] = false if @options[:autolink].nil?
  @options[:linkable_headers] = true if @options[:linkable_headers].nil?
  @id_counter = Hash.new(-1)

  prepend_span_parsers(:gitlab_autolink) if @options[:autolink]
  prepend_span_parsers(:escape_chars_gitlab, :commit_diff, :commit, :user_group_mention,
                       :issue, :merge_request, :snippet, :label, :strikethrough_gitlab)
  prepend_block_parsers(:fenced_blockquote)
  replace_block_parser!(:codeblock_fenced, :codeblock_fenced_gitlab)
  replace_block_parser!(:atx_header, :atx_gitlab_header)
  replace_block_parser!(:setext_header, :setext_gitlab_header)
end

Private Instance Methods

prepend_block_parsers(*parsers) click to toggle source
# File lib/kramdown/parser/gitlab_kramdown.rb, line 51
def prepend_block_parsers(*parsers)
  @block_parsers.unshift(*parsers)
end
prepend_span_parsers(*parsers) click to toggle source
# File lib/kramdown/parser/gitlab_kramdown.rb, line 47
def prepend_span_parsers(*parsers)
  @span_parsers.unshift(*parsers)
end
replace_block_parser!(original, new) click to toggle source
# File lib/kramdown/parser/gitlab_kramdown.rb, line 39
def replace_block_parser!(original, new)
  index = @block_parsers.index(original)

  return false unless index

  @block_parsers[index] = new
end