Class: RDoc::Generator::Markdown::Conversion

Inherits:
Object
  • Object
show all
Defined in:
lib/rdoc/generator/markdown/conversion.rb

Overview

Converts RDoc HTML and normalizes generated Markdown.

Class Method Summary collapse

Class Method Details

.markdownify(input, heading_level_offset: 0) ⇒ String

Converts RDoc HTML into GitHub-flavored Markdown.

Parameters:

  • input (String)

    RDoc HTML fragment.

  • heading_level_offset (Integer) (defaults to: 0)

    Heading levels to add.

Returns:

  • (String)

    Markdown with normalized links and no trailing whitespace.



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/rdoc/generator/markdown/conversion.rb', line 11

def self.markdownify(input, heading_level_offset: 0)
  fragment = normalized_html_fragment(input)
  anchor_aliases = tokenize_legacy_anchors(fragment.css("span.legacy-anchor[id]"))
  document = fragment.document
  fragment.css("a").each { |link| normalize_link(link, document) }
  markdown = ReverseMarkdown.convert(fragment, github_flavored: true).dup
  anchor_aliases.each { |token, id| markdown.gsub!(token, %(<a id="#{id}"></a>)) }
  normalize_definition_list_code_blocks(markdown).rstrip.gsub(/^(#+)(\s)/) do
    "#{"#" * [Regexp.last_match(1).length + heading_level_offset, 6].min}#{Regexp.last_match(2)}"
  end
end